全局变量HADOOP\u USER\u NAME oozie?

全局变量HADOOP\u USER\u NAME oozie?,hadoop,oozie,oozie-coordinator,sqoop,Hadoop,Oozie,Oozie Coordinator,Sqoop,有没有办法在oozie工作流中将HADOOP_用户名声明为全局变量?事实上,我正在为我的项目创建几个shell操作,但是为每个shell操作声明一个HADOOP_用户名是没有效率的,这就是为什么我想知道在这个场景中是否可以发生一个全局变量,如果是这样,我如何处理它 非常感谢你的帮助 这是我正在使用的代码 <workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5"> <global> &

有没有办法在oozie工作流中将HADOOP_用户名声明为全局变量?事实上,我正在为我的项目创建几个shell操作,但是为每个shell操作声明一个HADOOP_用户名是没有效率的,这就是为什么我想知道在这个场景中是否可以发生一个全局变量,如果是这样,我如何处理它

非常感谢你的帮助

这是我正在使用的代码

<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\u用户名
*****
错误[${wf:errorMessage(wf:lastErrorNode())}]
${jobTracker}
${nameNode}
脚本1.sh
脚本1.sh#脚本1.sh


出于某种原因,我没有从HADOOP_USER_NAME中获取值。也许我做得不对,我必须将它写在shell文件中,作为export 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>

${job tracker}
${namd node}
job1.xml
mapred.job.queue.name
${queueName}
HADOOP\u用户名
${username}

您可以将
传递给运行Java实用程序的任何类型的Oozie操作,但不能传递给shell操作

在您的特定情况下,您可以在每个shell操作中本地声明一个
,并且可以全局定义该变量的实际值

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




    Hadoop用户
    双向路由




    >
    ${jobTracker}
    ${nameNode}
    脚本1.sh
    HADOOP_USER=NAME=${hadoopUser}
    脚本1.sh#脚本1.sh




Oozie脚本中的“属性”是传递给Oozie“launcher”类的java属性。它们不是环境变量!!!无论如何,只有“核心”Oozie操作继承全局属性。不是shell/hive/sqoop/spark操作,它们实际上是插件,具有自己的XML模式。请参见本答案的第一部分: