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

标签 shell unix hive hiveql

我想做的事情非常简单。我只需要统计多个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/

相关文章:

r - 从配置单元执行 R 脚本

bash - 脚本中的陷阱命令在从 CLI 调用时有效,但在 PBS 作业中使用时无效

linux - 如何防止重复输入创建 cron 作业?

java.lang.ClassNotFoundException : org. apache.hive.service.cli.HiveSQLException 异常

linux - 如何在一定时间内循环?

unix - 将某些文件扩展名移动到 UNIX 中的不同目录

regex - hive :当列值由定界符(〜)分隔时,将单个记录扩展为多个记录

bash - Cshell 中的反向增量搜索

bash - 为什么 sudo -s 'printf "xx"' 无法处理换行符?

node.js - 如何从 bash 脚本运行 NVM 命令