美文网首页
Spark与Hive集成

Spark与Hive集成

作者: chenxk | 来源:发表于2019-08-27 10:31 被阅读0次

一:具体集成

1.将hive的配合文件hive-site.xml添加到spark应用的classpath中(相当于拷贝)

将hive-site.xml拷贝到${SPARK_HOME}/conf下。

2.第二步集成

根据hive的配置参数hive.metastore.uris的情况,采用不同的集成方式

分别:

 1. hive.metastore.uris没有给定配置值,为空(默认情况)
     SparkSQL通过hive配置的javax.jdo.option.XXX相关配置值直接连接metastore数据库直接获取hive表元数据
  但是,需要将连接数据库的驱动添加到Spark应用的classpath中

 2. hive.metastore.uris给定了具体的参数值
     SparkSQL通过连接hive提供的metastore服务来获取hive表的元数据
  直接启动hive的metastore服务即可完成SparkSQL和Hive的集成
  $ hive --service metastore &

3.使用hive-site.xml配置的方式

配置hive.metastore.uris的方式。

image.png

4.启动hive service metastore服务

如果没有配置全局hive,就使用bin/hive --service metastore &

三:Spark依赖第三方包

1. 将第三方jar文件打包到最终形成的spark应用程序jar文件中

这种使用的场景是,第三方的jar包不是很大的情况。使用spark-submit提交命令的参数: --jars 
$ bin/spark-shell --jars /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar:

这样就不再需要配置hive.metastore.uris参数配置。使用“,”分隔多个jar。

2.更改Spark的配置信息:SPARK_CLASSPATH, 将第三方的jar文件添加到SPARK_CLASSPATH环境变量中

使用场景:要求Spark应用运行的所有机器上必须存在被添加的第三方jar文件

a. 创建一个保存第三方jar文件的文件夹:

$ mkdir external_jars

b.修改Spark配置信息

$ vim conf/spark-env.sh
SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/cdh-5.3.6/spark/external_jars/*

c. 将依赖的jar文件copy到新建的文件夹中

$ cp /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar ./external_jars/

备注:

如果spark on yarn(cluster),如果应用依赖第三方jar文件,最终解决方案:将第三方的jar文件copy到${HADOOP_HOME}/share/hadoop/common/lib文件夹中(Hadoop集群中所有机器均要求copy)

参考链接:https://www.cnblogs.com/juncaoit/p/6545092.html

相关文章

网友评论

      本文标题:Spark与Hive集成

      本文链接:https://www.haomeiwen.com/subject/gvmsectx.html