我想做的事情很简单。我只需要统计多个Hive表中的记录。
我想创建一个非常简单的hql
脚本,该脚本将带有表名的file.txt作为输入,并计算每个表中的记录总数:
SELECT COUNT(*) from <tablename>
输出应类似于:
table1 count1
table2 count2
table3 count3
我是Hive的新手,并且不太熟悉Unix脚本,因此我无法弄清楚如何创建脚本来执行此操作。
有人可以帮我吗?预先感谢。
答案 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