全局变量 HADOOP_USER_NAME oozie?

global variable HADOOP_USER_NAME oozie?

有什么方法可以在 oozie 工作流中将 HADOOP_USER_NAME 声明为全局变量?实际上我正在为我的项目创建几个 shell 动作,但是为每个 shell 动作声明一个 HADOOP_USER_NAME 效率不高,这就是为什么我想知道全局变量是否可以发生在这个如果是这样,我该如何处理...

非常感谢您的帮助。

这是我正在使用的代码

<workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5">
  <global>
        <configuration>
            <property>
                <name>HADOOP_USER_NAME</name>
                <value>*****</value>
            </property>
        </configuration>
  </global>
<start to="shell-a0a5"/>
<kill name="Kill">
    <message>Error [${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shell-a0a5">
    <shell xmlns="uri:oozie:shell-action:0.1">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <exec>script1.sh</exec>
        <file>script1.sh#script1.sh</file>
    </shell>
    <ok to="End"/>
    <error to="Kill"/>
</action>
<end name="End"/>

出于某种原因,我没有从 HADOOP_USER_NAME 中获取值,也许我做错了,我不得不将其写到 shell 文件中作为导出 HADOOP_USER_NAME =****;

您可以在工作流顶部添加全局标记,作为 workflow.xml

中操作的全局配置
<workflow-app xmlns="uri:oozie:workflow:0.4" name="wf-name">
<global>
<job-tracker>${job-tracker}</job-tracker>
<name-node>${namd-node}</name-node>
<job-xml>job1.xml</job-xml>
<configuration>
    <property>
        <name>mapred.job.queue.name</name>
        <value>${queueName}</value>
        <name>HADOOP_USER_NAME</name>
        <value>${username}</value>
    </property>
</configuration>

您可以将 <property> 传递给 运行 任何类型的 Oozie 操作 Java 实用程序 -- 但不能传递给shell 行动。

在您的特定情况下,您可以在 each shell 操作中局部声明一个 <env-var>,并且您可以全局定义该变量的实际值...

  • 在工作流程的 <parameter> 部分
  • 或在提交时的配置文件中

    <工作流应用名称='hello-wf' xmlns="uri:oozie:workflow:0.4">
    <参数>
    <属性>
    hadoopUser
    比卢特


    ...
    <操作名称='some-shell'>
    >
    <工作追踪器>${jobTracker}
    <名称节点>${nameNode}
    <执行>script1.sh
    HADOOP_USER=NAME=${hadoopUser}
    script1.sh#script1.sh

    <确定="End"/>
    <错误="Kill"/>

    ...