我想做的事情非常简单。我只需要统计多个Hive表中的记录即可。
我想创建一个非常简单的 hql
脚本,该脚本采用带有表名的 file.txt 作为输入,并计算每个文件中的记录总数:
SELECT COUNT(*) from <tablename>
输出应该是这样的:
table1 count1
table2 count2
table3 count3
我是 Hive 新手,不太熟悉 Unix 脚本,而且我无法弄清楚如何创建脚本来执行此操作。
有人可以帮我做这件事吗?提前致谢。
最佳答案
简单的工作 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
您可以改进此脚本并使用 select 命令生成文件,甚至使用 union all
进行单选择,然后执行文件,而不是为每个表调用 Hive。
如果您想从文件中读取表名,请使用:
for table in filename
do
...
done
关于shell - 如何创建一个 unix 脚本来通过将表名作为文件的输入来循环 Hive SELECT 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089696/