我正在开发几个基于hive的etl,严重违反了dry(不要重复)原则。如何在配置单元sql脚本中获得更多的可组合性/可重用性?基本上我在找一个 INCLUDE 或者 IMPORT 命令。有什么建议吗?对于那些编写大量hiveql脚本的人来说,如何不重复自己的工作呢?提前谢谢。
INCLUDE
IMPORT
t9eec4r01#
您只需要将可重用的配置单元脚本转换为小型脚本 .HQL 文件夹。为命令执行创建shell脚本 .HQL 文件夹。您只需确保当前正在执行的脚本已完成其前提条件。i、 e.它应该具有预期的表/模式。有两件事可以帮助你。1) 那个 hive -f d.hql command:在shell脚本中使用一系列此命令来有序执行脚本。例如
.HQL
hive -f d.hql
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等待最后一个命令完成。当最后一个脚本的输出表被输入到下一个脚本时,这一点非常重要。2) 使用 hiveconf 在运行时自定义表、模式(甚至where条件或列名)。例如 create table '${hiveconf:schema.name}.my_table ...
wait
hiveconf
create table '${hiveconf:schema.name}.my_table ...
1条答案
按热度按时间t9eec4r01#
您只需要将可重用的配置单元脚本转换为小型脚本
.HQL
文件夹。为命令执行创建shell脚本.HQL
文件夹。您只需确保当前正在执行的脚本已完成其前提条件。i、 e.它应该具有预期的表/模式。
有两件事可以帮助你。
1) 那个
hive -f d.hql
command:在shell脚本中使用一系列此命令来有序执行脚本。例如你可能会注意到
wait
命令,基本上是告诉shell等待最后一个命令完成。当最后一个脚本的输出表被输入到下一个脚本时,这一点非常重要。2) 使用
hiveconf
在运行时自定义表、模式(甚至where条件或列名)。例如create table '${hiveconf:schema.name}.my_table ...