Return to site

Hive CLI, Beeline,

Zeppelin Notebook

HUE

运行Hive job的几种环境比较

· bigdata,Hive

HIVE CLI

这是我第一次以工程师身份操作Hive DB数据时的环境.登录远程服务器后, 直接运行hive, 就进入了 hive cli. (以当前执行者的身份新开了一个hive jvm)

附加参数, hive cli提供了几种参数,

  • hive -d , --define <key=value>      定义变量,  值替换    右侧必须为值, 不能为函数
  • hive --hiveconf <property=value>    定义配置值
  • hive --hivevar <key=value>               定义变量, 值替换   右侧必须为值, 不能为函数
  • hive -e "<quoted-query-string>"     引号部分是要提供的查询命令,可附带一些临时设置set命令<quoted-query-string>
  • hive -f  <filename>          -f 后面跟本地存在的文件
  • hive -i <filename>      运行查询文件之前执行加载的头文件 = Initialization SQL file   如果运行时没有-i参数, 则会默认从  $HIVE_HOME/bin/.hiverc 和 $HOME/.hiverc 加载
  • hive -S  , --silent           Silent mode 静默模式 (Interactive Shell)
  • hive -v, --verbose         Verbose mode (打印要执行的SQL查询命令)
  • hive -d , --define <key=value>      定义变量
  • hive -e "<quoted-query-string> 
    "     引号部分是要提供的查询命令,可附带一些临时设置set命令
  • hive -f /path/to/local/file          -f 后面跟本地存在的文件

wiki中的使用示例:

$HIVE_HOME/bin/hive -e 'select a.col from tab1 a' --hiveconf hive.exec.scratchdir=/home/my/hive_scratch --hiveconf mapred.reduce.tasks=32

综上来说, 我会开启1个Hive CLI Session 只会做以下场景的查询:

show tables like '*keyword*'; | describe formatted table_name ; | show create table / show functions |

而不会执行超过10秒或者是超过10行以上结果的操作.

我的常用hive cli 开启方式是

$ hive -S -v --database dwd

Beeline

Beeline是另一个Hive Client, 而且在高版本的CDH 或 HDP上,已经提示 Hive CLI已经过时, 建议你切换到Beeline:

WARNING: Hive CLI is deprecated and migration to Beeline is recommended.

Beeline通过JDBC连接到HiveServer2,可以先执行beeline进入交互SHELL, 再执行

beeline> !connect jdbc:hive2://xxx.xxx.xxx.xxx:10000 default default

以下是从Beeline连接的例子:

$ beeline -u jdbc:hive2://localhost:10000

scan complete in 2ms
Connecting to jdbc:hive2://localhost:10000
Connected to: Apache Hive (version 1.1.0-cdh5.14.0)
Driver: Hive JDBC (version 1.1.0-cdh5.14.0)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 1.1.0-cdh5.14.0 by Apache Hive

0: jdbc:hive2://localhost:10000> show tables;

0:jdbc:hive2://localhost:10000>show tables;

INFO : Compiling command(queryId=hive_20181218214040_3af7f39d-e0a1-4eba-b8ad-05be6c248a50): show tables
INFO : Semantic Analysis Completed
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:tab_name, type:string, comment:from deserializer)], properties:null)
INFO : Completed compiling command(queryId=hive_20181218214040_3af7f39d-e0a1-4eba-b8ad-05be6c248a50); Time taken: 0.018 seconds
INFO : Executing command(queryId=hive_20181218214040_3af7f39d-e0a1-4eba-b8ad-05be6c248a50): show tables
INFO : Starting task [Stage-0:DDL] in serial mode
INFO : Completed executing command(queryId=hive_20181218214040_3af7f39d-e0a1-4eba-b8ad-05be6c248a50); Time taken: 4.369 seconds

 

... ...

- show tables;

- describe sample_table_name;

使用Beeline运行HiveQL文件

echo "show tables" >> foobar.hql

$ beeline -u 'jdbc:hive2://localhost:10000/;transportMode=https' -i foobar.hql

-i 参数 查询完成后 还会停留在beeline环境, 如果使用 -f 参数, 则会退出。 (退出: !quit)

个人习惯会使用 Https协议:

$ beeline -u 'jdbc:hive2://192.168.79.238:10000/;transportMode=https' --color=true

-i xxx.hql

Beeline可选参数

由于这里的篇幅较长, 我将之贴到了这个Gist链接:

https://gist.github.com/staticor/42397e5ef40c4e39aa069a22b3650f07

Zeppelin Notebook与HUE

比起前面两种看上去更HardCore的界面, Zeppelin 与 HUE 则友好多了。

前者更是一个多语言临时查询或计算的Notebook, 类似Python中的IPYTHON Notebook 界面。

在安装部署完Zeppelin后需要添加Hive Interpreter, 参考Zeppelin Doc 

之后就能执行Hive的查询了, 在一个新开启的Cell如下执行:

%hive

 

show tables

HUE则是我更推荐使用的分析查询工具, 主要是其提供了更强大的解释和辅助元信息的优点。

HUE figure

一般选择数据库,然后只需要在左侧边栏中关键字限定要查询的表就会出现filted list。

然后对单个表名点击 「i」的标志就能看到quick glance界面 -- 可以迅速查看表的元信息和样行信息(前500行), 然后在编辑时可以提供一些表名的联想完成, 字段名提示等。

这自然大大提升了我们开发HiveQL的效率。

数据权限问题

目前来看我限定了几个用户组, 对用户的metadata 没有起作用。

 

这个问题待未来我彻底fix之后, 会再回来完成。

 

 

参考链接

hive cli 相关:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli

beeline相关:

https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-Beeline%E2%80%93NewCommandLineShell

https://docs.azure.cn/zh-cn/hdinsight/hadoop/apache-hadoop-use-hive-beeline

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OK