i init脚本的hadoop-oozie配置单元操作

iszxjhcz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(309)

如何使用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:添加工作流操作

g52tjvyc

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认为分隔符空间应该是值的一部分。。。!

相关问题