如何将常用Impala shell命令迁移改写为等效Hive可用命令
Impala Shell命令转Hive等效实现方案
以下是和原Impala命令逻辑完全对齐的Hive实现,使用Hive官方推荐的beeline客户端作为交互工具:
完整等效命令
# 1. 查询获取库名.表名的拼接结果 TABLE=$(beeline --silent --outputformat=dsv --showHeader=false -u jdbc:hive2://${server}:10000 -e "select concat(db_normalized,'.',tb_normalized) from parametric_table where source='testSource' and product='testProduct' limit 1" 2>/dev/null) # 2. 刷新指定表的元数据 nohup beeline --silent -u jdbc:hive2://${server}:10000 -e "REFRESH TABLE $TABLE;" >> ${logsPath}/hiveRefresh.out &
参数与语法说明
--silent参数对应Impala的--quiet,关闭冗余日志输出,仅返回执行结果--outputformat=dsv对应Impala的--delimited,输出分隔符分隔的纯文本结果--showHeader=false关闭查询结果的表头输出,确保返回内容只有库表拼接字符串,不会额外返回列名- 连接串
jdbc:hive2://${server}:10000中的10000是HiveServer2的默认端口,若集群修改了端口需要替换为实际端口 - 如果集群开启了认证,可按需补充连接参数:用户名密码认证添加
-n 用户名 -p 密码,Kerberos认证在jdbc连接串中补充principal参数即可 - 如果你要刷新的是新增了HDFS分区目录的分区表,可将
REFRESH TABLE $TABLE替换为MSCK REPAIR TABLE $TABLE,自动同步新增的分区元数据
内容的提问来源于stack exchange,提问作者Mikel Laburu
相关产品推荐
相关产品推荐

