**
Hive on Zeppelin
**
官网:zeppelin.apache.org
做大数据的人应该对Hive不陌生,Hive应该是大数据SQL引擎的鼻祖。历经多个版本的改进,现在的Hive3已经具备比较完善的ACID功能,能够同时满足交互式查询和ETL 两种场景。
那怎么来用hive呢 ?如果你还在用beeline来跑hive sql的话,你就弱爆了,来看看强大的Zeppelin能够给你带来什么吧
配置Hive Interpreter
未启用Shiro
未启用kerberos
启用kerberos
启用Shiro
未启用kerberos
启用kerberos
Interpreter 是Zeppelin里最重要的概念,每一种Interpreter对应一个引擎。Hive对应的Interpreter是Jdbc Interpreter, 因为Zeppelin是通过Hive的Jdbc接口来运行Hive SQL。
接下来你可以在Zeppelin的Interpreter页面配置Jdbc Interpreter来启用Hive。首先我想说明的是Zeppelin的Jdbc Interpreter可以支持所有Jdbc协议的数据库,Zeppelin 的Jdbc Interpreter默认是连接Postgresql。
启动Hive,可以有2种选择
- 修改默认jdbc interpreter的配置项(这种配置下,在Note里用hive可以直接 %jdbc 开头)
- 创建一个新的Jdbc interpreter,命名为hive (这种配置下,在Note里用hive可以直接 %hive 开头)
这里我会选用第2种方法。我会创建一个新的hive interpreter,然后配置以下基本的属性(你需要根据自己的环境做配置)
hive.driver 配置成 org.apache.hive.jdbc.HiveDriver, 因为Zeppelin没有把Hive打包进去,所以默认情况下找不到这个Class的,你需要在这个Interpreter中添加dependency,如下图所示:
hive.url的默认配置形式是 jdbc:hive2://host:port/<db_name>, 这里的host是你的hiveserver2的机器名,port是 hiveserver2的thrift 端口 (如果你的hiveserver2用的是binary模式,那么对应的hive配置是hive.server2.thrift.port (默认是10000),如果是http模式,那么对应的hive配置是hive.server2.thrift.http.port,(默认是10001) 。db_name是你要连的hive 数据库的名字,默认是default
高级功能
看到这边,你可能会说Zeppelin不就是连接hive jdbc来运行sql嘛,也没什么特别的啊。稍安勿躁,接下来我们来看看除了以上基本sql的执行功能,Zeppelin的Jdbc Interpreter还能为Hive做什么:
● Dynamic Forms
● 支持一次运行多条SQL语句
● 支持并发运行多条SQL语句
● 展示Hive Job运行过程log
● 关联Job URL
● Rest API 运行 Hive SQL
Dynamic Forms
Dynamic Forms 是Zeppelin的一个高级功能,允许用户在代码中插入UI控件来允许用户定制化你的代码。Jdbc Interpreter支持这一功能,用户可以定制SQL,下面是一个下拉框的例子。
Zeppelin也支持文本框,Checkbox,具体可以参考 http://zeppelin.apache.org/docs/0.8.0/usage/dynamic_form/intro.html
支持一次运行多条SQL语句
默认情况下,Zeppelin支持在一个Paragraph中按顺序运行多条SQL语句。每条SQL语句以分号隔开,如下图
支持并发运行多条SQL语句
默认情况下,Jdbc Interpreter能够允许同时运行多条SQL语句(运行多个Hive Job),你可以修改以下配置来调整。
展示Hive Job运行过程log
在最新版本的Zeppelin中可以展示Hive Job的运行过程log,和你在beeline里看到的一样。如下图所示:
如果你不想看到log,那么有2种方式
● 设置hive interpreter的属性 hive.log.display 为false,这样所有的paragraph都不会展示log
● 设置paragraph的local property:displayLog=false来控制每个paragraph的log输出,如下图:
关联Job URL
如果你是用MR引擎,那么Zeppelin还帮你自动关联到对应MR Job URL。