zeppelin的操作流程:
首先添加hive的interpreter
相关的配置信息如下所示:
另外还要添加相关的依赖:
hive的操作方式 利用hiveserver2来操作
首先要启动元数据服务
cd hive
cd bin
./hive --service metastore & //后台启动
./hive --service hiveserver2 &
./beeline -u jdbc:hive2://172.16.0.37:10000 hadoop //这里的用户名是hive所在的机器的用户和密码 本地是hadoop hadoop
接下就可以操作sql了。
在beeline连接hiveserver2的时候报错了
第一种方式
beeline> !connect jdbc:hive2://localhost:10000
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000: !connect jdbc:hive2://localhost:10000 hadoop
Enter password for jdbc:hive2://localhost:10000: ******
Error: Failed to open new session: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: !connect jdbc:hive2:/localhost:10000%20hadoop (state=,code=0)
0: jdbc:hive2://localhost:10000 (closed)>
第二种方式就没有错了
./beeline -u jdbc:hive2://172.16.0.37:10000 hadoop //这里的用户名是hive所在的机器的用户和密码 本地是hadoop Hadoop
接下来创建notebook
注意在写sql的时候,前面必须要加上[hive]
我们知道hive默认是解析成Mapreduce来执行的。
但是我们可以设置spark作为hive的默认解析方式这样的话,执行sql的效率会快很多的。
设置的方式:
在./hive –servive hiveserver2 &
./beeline -u jdbc:hive2://172.16.0.37:10000 hadoop
在连接成功的时候会执行sql操作了:
set hive.execution.engine=spark;
set spark.master=yarn-cluster; //是spark的运行模式 local[*]
set mapreduce.job.queuename=ada.spark; //这个可以默认参数验证是否设置成功
执行相关的查询操作就ok了。
使用spark引擎查询hive有以下几种方式:
1>使用spark-sql(spark sql cli)
2>使用spark-thrift提交查询sql
3>使用hive on spark(即hive本身设置执行引擎为spark)
针对第一种情况:
1>ambari 已经支持,不需要特殊配置;
2>cdh不支持spark sql cli,原因是cdh自带的spark,spark-sql和spark-R是阉割版本的,如果需要使用
spark sql cli,需要下载原生的编译好的spark包替换cdh自带的包
针对第二种情况:
1>cdh 上手动启动/opt/cloudera/parcels/SPARK2-2.0.0.cloudera.beta1-1.cdh5.7.0.p0.108015/lib/spark2/sbin/start-thriftserver.sh
然后通过beeline连接即可(由于hive-site.xml配置的和hive thrift一样,没有单独配置,所以应在hiveserver2之外的其他节点启动start-thriftserver.sh,这个服务看看能不能添加到spark2管理界面中 ),目前已经调试通过
注:131上spark/conf/yarn-conf/hive-site.xml这个文件不存在,手动拷贝的,50上是有的
2>ambari支持,且sparkthrift服务也启动正常,但是在通过beeline连接的时候报错:
原因是:自启动的hive默认配置不完全,需要手动在spark的配置下找到hive-site的配置添加缺少项;
hive.server2.enable.doAs=true
hive.server2.thrift.port=10016与hive的区别开
hive.server2.transport.mode=binary
spark.yarn.queue=ada.spark
hive.metastore.warehouse.dir=/apps/hive/warehouse,否则找不到会使用执行命令所在目录作为仓库