Oozie Hive Action因参数分配而失败?

时间:2017-11-17 18:01:28

标签: hive hiveql oozie oozie-workflow

我正在尝试使用Oozie测试运行一个简单的Hive脚本,但我一直收到一个我无法理解的错误。

每次提交作业时,都会收到一条错误消息,指出“作业失败,错误消息[参数表达式必须包含赋值:jobRequest]”。但是,我定义了此参数,并在最初提交配置时为其分配值。

有问题的参数是我正在尝试创建的外部配置单元表名称。在Oozie工作流程中,我定义了传递给Hive脚本的表名参数:

<param>${hiveTableName}</param>

然后我创建一个我提交给oozie的job.xml,其中为此参数赋值如下:

<property>
    <name>hiveTableName</name>
    <value>jobRequest</value>
</property>

有没有其他人遇到这样的问题,或者知道可能导致什么问题?看起来参数已正确定义和分配,但作业仍然失败,并显示上述错误消息。如果它有帮助,我正在使用的xml命名空间是:

<hive xmlns="uri:oozie:hive-action:0.2">

1 个答案:

答案 0 :(得分:0)

  

我收到一条错误消息,指出“作业失败,错误消息[参数表达式必须包含赋值:jobRequest]”

它抱怨param标签中缺少赋值运算符。查看文档以获取更多详细信息https://oozie.apache.org/docs/3.3.1/DG_HiveActionExtension.html

第一个解决方案,使用属性标记使用如下

<property>
    <name>hiveTableName</name>
    <value>jobRequest</value>
</property>

像这样添加参数:

 <param>hiveTableName=${hiveTableName}</param>

通过job.properties的第二个解决方案: 您希望使用<param>标记传递参数,在job.properties中定义变量,然后使用<param>标记传递。

例如在job.properties中添加

hiveTableName=jobRequest

然后将<param>hiveTableName=${hiveTableName}</param>放入oozie工作流配置操作