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)