Hive - 可以提取常用选项以便在其他脚本中重用吗?

时间:2016-11-22 19:51:05

标签: sql hive hiveql

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

2 个答案:

答案 0 :(得分:2)

您可以将这些配置参数存储在公共文件中,并使用source命令加载到每个脚本中:

source /tmp/common_init.hql;

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

答案 1 :(得分:0)

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