我有两个Hive脚本,如下所示:
脚本a:
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=non-strict;
SET hive.exec.parallel=true;
... do something ...
脚本b:
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=non-strict;
SET hive.exec.parallel=true;
... do something else ...
我们在每个脚本开头设置的选项是相同的。是否有可能将它们提取到一个公共位置(例如,提取到commonoptions.sql中),以便我们的脚本如下所示:
脚本a:
<run commonoptions.sql>
... do something ...
脚本b:
<run commonoptions.sql>
... do something else ...
理想情况下,我也想提取表定义,以便:
脚本a:
<run commonoptions.sql>
<run defineExternalTableXYZ.sql>
... do something with Table XYZ ...
脚本b:
<run commonoptions.sql>
<run defineExternalTableXYZ.sql>
... do something else with Table XYZ ...
这样我就可以在一个点上管理tablexyz定义。我没有使用配置单元cli。我正在使用带有Hive步骤的amazon emr。
2条答案
按热度按时间fzwojiic1#
您可以将这些配置参数存储在公共文件中,并使用
source
命令:还可以从数据库中为每个工作流生成此文件。
rjee0c152#
你应该可以使用
hive -i config.hql -f script_A.hql
,在哪里config.hql
将包含您的动态设置。这个-i
标志允许您传递将在实际配置单元文件传递到之前执行的初始化脚本-f
. 我不太熟悉aws是如何分步启动hive作业的,但您可能需要编辑提交参数。