我有两个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定义。我没有使用Hive CLI。我正在使用Amazon EMR和Hive Steps。
答案 0 :(得分:2)
您可以将这些配置参数存储在公共文件中,并使用source
命令加载到每个脚本中:
source /tmp/common_init.hql;
您也可以从数据库为每个工作流生成此文件。
答案 1 :(得分:0)
您应该可以使用hive -i config.hql -f script_A.hql
,其中config.hql
将包含您的动态设置。 -i
标志允许您传递将在实际配置单元文件传递到-f
之前执行的初始化脚本。我不太熟悉AWS如何逐步启动hive作业,但可能是你编辑提交参数。