一:具體集成
1.將hive的配合文件hive-site.xml添加到spark應(yīng)用的classpath中(相當(dāng)于拷貝)
將hive-site.xml拷貝到${SPARK_HOME}/conf下信轿。
2.第二步集成
根據(jù)hive的配置參數(shù)hive.metastore.uris的情況翩隧,采用不同的集成方式
分別:
1. hive.metastore.uris沒有給定配置值宣虾,為空(默認(rèn)情況)
SparkSQL通過hive配置的javax.jdo.option.XXX相關(guān)配置值直接連接metastore數(shù)據(jù)庫直接獲取hive表元數(shù)據(jù)
但是,需要將連接數(shù)據(jù)庫的驅(qū)動(dòng)添加到Spark應(yīng)用的classpath中
2. hive.metastore.uris給定了具體的參數(shù)值
SparkSQL通過連接hive提供的metastore服務(wù)來獲取hive表的元數(shù)據(jù)
直接啟動(dòng)hive的metastore服務(wù)即可完成SparkSQL和Hive的集成
$ hive --service metastore &
3.使用hive-site.xml配置的方式
配置hive.metastore.uris的方式唆缴。
4.啟動(dòng)hive service metastore服務(wù)
如果沒有配置全局hive,就使用bin/hive --service metastore &
三:Spark依賴第三方包
1. 將第三方j(luò)ar文件打包到最終形成的spark應(yīng)用程序jar文件中
這種使用的場景是,第三方的jar包不是很大的情況。使用spark-submit提交命令的參數(shù): --jars
$ bin/spark-shell --jars /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar:
這樣就不再需要配置hive.metastore.uris參數(shù)配置择浊。使用“,”分隔多個(gè)jar逾条。
2.更改Spark的配置信息:SPARK_CLASSPATH, 將第三方的jar文件添加到SPARK_CLASSPATH環(huán)境變量中
使用場景:要求Spark應(yīng)用運(yùn)行的所有機(jī)器上必須存在被添加的第三方j(luò)ar文件
a. 創(chuàng)建一個(gè)保存第三方j(luò)ar文件的文件夾:
$ 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)琢岩,如果應(yīng)用依賴第三方j(luò)ar文件,最終解決方案:將第三方的jar文件copy到${HADOOP_HOME}/share/hadoop/common/lib文件夾中(Hadoop集群中所有機(jī)器均要求copy)