如何通过将表名作为文件输入来创建unix脚本来循环Hive SELECT查询?

时间:2019-07-18 07:58:25

标签: shell unix hive hiveql

我想做的事情很简单。我只需要统计多个Hive表中的记录。

我想创建一个非常简单的hql脚本,该脚本将带有表名的file.txt作为输入,并计算每个表中的记录总数:

SELECT COUNT(*) from <tablename>

输出应类似于:

table1 count1
table2 count2
table3 count3

我是Hive的新手,并且不太熟悉Unix脚本,因此我无法弄清楚如何创建脚本来执行此操作。

有人可以帮我吗?预先感谢。

1 个答案:

答案 0 :(得分:2)

简单的工作Shell脚本:

 db=mydb

 for table in $(hive -S -e "use $db; show tables;") 
 do 
 #echo "$table"
 hive -S -e "use $db; select '$table' as table_name, count(*) as cnt from $table;"
 done

您可以改进此脚本并使用选择命令生成文件,甚至可以使用union all进行单选,然后执行文件而不是为每个表调用Hive。

如果您想从文件中读取表名,请使用以下命令:

for table in filename
do 
...
done