如何使用init脚本运行oozie配置单元或配置单元2操作?
在cli中,通常可以通过 -i init.hive
论证;但是,当在oozie动作中使用它时 <argument>-i init.hive</argument>
工作流因出现错误而停止。
我将init.hive文件与 <file>init.hive#init.hive</file>
属性,该属性在本地appcache目录中可用。
$ ll appcache/application_1480609892100_0274/container_e55_1480609892100_0274_01_000001/ | grep init
> lrwxrwxrwx 1 root root 42 Jan 12 12:24 init.hive -> /hadoop/yarn/local/filecache/519/init.hive
错误(在本地appcache中)如下
Connecting to jdbc:hive2://localhost:10000/
Connected to: Apache Hive (version 1.2.1000.2.4.0.0-169)
Driver: Hive JDBC (version 1.2.1000.2.4.0.0-169)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Running init script init.hive
init.hive (No such file or directory)
hive2操作如下所示(完整的工作流可以在github上找到https://github.com/chaosmail/oozie-bugs/tree/master/simple-hive-init/simple-hive-init-wf)
<action name="test-action">
<hive2 xmlns="uri:oozie:hive2-action:0.1">
<jdbc-url>${jdbcURL}</jdbc-url>
<script>query.hive</script>
<argument>-i init.hive</argument>
<file>init.hive#init.hive</file>
</hive2>
<ok to="end"/>
<error to="fail"/>
</action>
编辑1:添加工作流操作
1条答案
按热度按时间g52tjvyc1#
[回顾上面的评论线索,再加上回顾中的一些额外内容]
oozie文档声明您可能有多个
<argument>
元素,这意味着必须单独提供参数。回想起来,这是有意义的——在命令行上,shell将参数列表解析为
args[]
数组,但oozie不是shell解释器。。。经验表明,beeline接受命令行参数的两种语法变体。。。
-xValue
(一个arg)表示选项-x
与相关Value
-x
然后Value
(两个args)意思是一样的因此,有两种正确的方法可以通过oozie将命令行参数传递给beeline:
-xValue
<argument>-x</argument> <argument>Value</argument>
另一方面,<argument>-x Value</argument>
将失败,因为在单参数语法中,beeline认为分隔符空间应该是值的一部分。。。!