cdh5.9添加sparksql cli直接操作hive

由于项目需要,需要在cloudera的spark中直接用sparksql操作hive,但是cloudera的spark中没有sparksql cli(也就是没有spark-sql命令),有关解决方案网上比较多。

cloudera的安装

参照这篇博客基本上就可以离线安装好cloudera
我在自己笔记本的虚拟机上装了一天半的时间,最后还是部分框架没有安装成功,总结的经验就是cloudera通过cm来安装对内存和硬盘有点要求,结论是,物理机是一台的话,内存最好是16G及以上,这样你的虚拟机你最少得弄四台,装cm5的server的这台机器最少内存得在4G以上,其他cm5 agent在2G以上,按需更改。硬盘每台20G(我cm5 server的硬盘只有10G,居然不够,报错)。
cm5启动之后,你最好多次查看
/opt/cm/etc/init.d/cloudera-scm-server status
/opt/cm/etc/init.d/cloudera-scm-agent status
来确保它们启动没,如果没启动好,你肯定安装是失败的。

cdh5.9 添加sparksql cli

在spark官网中下载的spark包中是有spark-submit、spark-shell、spark-sql,其中spark-sql是类似于hive的直接操作sql的输入终端,但是在cloudera版spark中是没有spark-sql的,这就需要我们编译源码了,编译替换掉cloudera版spark下的spark-assembly-xxx.jar这个包。
编译过程参考这篇文章
还有这篇博客
在spark源码编译的过程中,我指定是cloudera版本的时候,下载好多jar指向推特的库,下不下来,而且,我*发现这5.9版本的库好像不存在,可以参照上面编译spark源码的第一篇修改下pom.xml,但是我没有修改pom.xml也没有指定cloudera版本的,直接指向hadoop版本(spark-assembly-1.6.1-hadoop2.6.4.jar),
spark-assembly-1.6.1-hadoop2.6.4.jar编译完成之后直接替换就可以了。
对比如下:
cdh5.9添加sparksql cli直接操作hive
sparksql的链接方式如第二篇博客里面的,尝试之后都可以,spark-sql cli和beeline方式都可行。