1.下載spark源碼,在spark源碼目錄下面有個make-distribution.sh文件,修改里面的參數,使編譯后能支持hive,修改后執行該文件。(要預先安裝好maven才能編譯)。
2.將編譯好的spark源碼部署到機器上,然后將hive/conf中的hive-site.xml拷貝到spark/conf目錄下。然后可以通過spark-shell來測試一下,詳見:http://www.cnblogs.com/hseagle/p/3758922.html
3.spark中使用hive要時,要啟動hive server服務,在hive/bin目錄下建立一個腳步文件,添加 chmod u+x filename
nohup ./hive --service hiveserver >> hiveserver.log 2>&1 & echo $! > hive-server.pid
4.在eclipse中編寫spark程序時,要將spark/lib中的包倒入,spark-examples。。。.jar不用導入。如果要操作hive可能還要倒入對應的數據庫jdbc驅動。
5.在eclipse中直接運行java 版的spark hive程序時可能會會先hive的metastore不正確的,而是鏈接的默認metastore此時就會出現各種錯誤eg.no table TABLENAME, can't fetch table ...,類似的錯誤,我的解決辦法是,將java程序打包成jar,將導出的jar包拷貝到spark/lib目錄下。,然后通過參考spark/bin中的spark-submit腳本命令來執行jar程序,參考spark/bin/run-examples腳步,做了如下簡化,測試后可以進行簡單的無參數輸入執行:
SCALA_VERSION=2.10 FWDIR="$(cd `dirname $0`/..; pwd)" export SPARK_HOME="$FWDIR" export SPARK_EXAMPLES_JAR=$SPARK_HOME/lib/YOUR_EXPORT_JAR_NAME.jar EXAMPLE_MASTER=${MASTER:-"local[*]"} EXAMPLE_CLASS=demo.wrencai.cup.SparkHiveDemo "$FWDIR"/bin/spark-submit \ --master $EXAMPLE_MASTER \ --class $EXAMPLE_CLASS \ --name SparkSubmit_Demo \ "$SPARK_EXAMPLES_JAR" \
注意:上面的腳本中需要修改藍色標注的兩行,將紅色字體分別改成你所導出的jar包名和你要執行的類名g(格式:YourPacketName.YourClassName)