如何在我的 Hive SQL 脚本中获得更多的可组合性/可重用性?

How can I gain more composability / reusability in my Hive SQL scripts?

我正在开发几个基于 Hive 的 ETL,严重违反了 DRY(不要重复自己)原则。

如何在我的 Hive SQL 脚本中获得更多的可组合性/可重用性?

基本上我正在寻找 INCLUDEIMPORT 命令。

有什么建议吗?对于编写大量 HiveQL 脚本的人,您如何不重复自己?

提前致谢。

您只需要将可重用的配置单元脚本放入小 .HQL 文件中。创建 shell 脚本以按顺序执行 .HQL 个文件。

您需要确保当前执行的脚本确实已完成 pre-requisite。即它应该预期 table/schema.

有两件事对你有帮助。

1) hive -f abcd.hql命令:在shell脚本中使用一系列此命令来有序执行脚本。例如

hive -f specific.hql
wait $! 
hive -f reusable1.hql
wait $! 
hive -f specific2.hql
wait $! 
hive -f specific3.hql
wait $! 
hive -f reusable2.hql

您可能会注意到 wait 命令,主要是告诉 shell 等待最后一个命令完成。当上一个脚本的输出 table 被输入到下一个脚本时,这一点非常重要。

2) 在运行时使用hiveconf 自定义table、模式(甚至where 条件或列名)。例如create table '${hiveconf:schema.name}.my_table ...