hive-是否可以提取公共选项以便在其他脚本中重用?

9gm1akwq  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(308)

我有两个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。

fzwojiic

fzwojiic1#

您可以将这些配置参数存储在公共文件中,并使用 source 命令:

source /tmp/common_init.hql;

还可以从数据库中为每个工作流生成此文件。

rjee0c15

rjee0c152#

你应该可以使用 hive -i config.hql -f script_A.hql ,在哪里 config.hql 将包含您的动态设置。这个 -i 标志允许您传递将在实际配置单元文件传递到之前执行的初始化脚本 -f . 我不太熟悉aws是如何分步启动hive作业的,但您可能需要编辑提交参数。

相关问题