全局变量 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"/>
动作>
...
有什么方法可以在 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"/>
动作>
...