gpt4 book ai didi

hadoop - 如何在oozie中创建/声明全局变量?

转载 作者:行者123 更新时间:2023-12-02 21:12:00 25 4
gpt4 key购买 nike

我正在创建一个oozie worklow,其中我需要多个shell Action ,但是我面临的问题是,对于工作流中的每个shell Action ,我都必须声明一个环境变量,这意味着如果我有10个shell Action ,我需要声明10次,我的问题是:是否有什么方法可以声明/创建全局变量,以避免重复做的变量相同?

例:

    jon.properties
oozie.use.system.libpath=true
security_enabled=False
dryrun=False
nameNode=hdfs://localhost:8020
user_name=test
jobTracker=localhost::8032

<workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5">
<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>/user/hive/script1.sh#script1.sh</file>
</shell>
<ok to="End"/>
<error to="Kill"/>
</action>
<end name="End"/>

我的script1.sh期望有一个名为user_name的参数,已将其声明到job.properties中,但在我的工作流中不起作用,我正在丢失参数用户名

我想知道如何从全局配置文件将参数发送到Shell脚本

谢谢

最佳答案

我无法创建全局参数来传递以下值:用户名和密码,HADOOP_USER_NAME(在我的情况下),但是我能够使用shell脚本弄清楚它,因此在shell中,我为提案定义了以下参数:

export HADOOP_USER_NAME=admin;
connection=$(hdfs dfs -cat /user/connection.txt)

其中connection.txt包含连接字符串的所有信息
然后使用sqoop,我以这种方式在 shell 文件中传递信息:
sqoop $connection --table test --target-dir /user/hive/warehouse/Jeff.db/test/ --m 1 --delete-target-dir

这样就可以解决我的问题,我必须声明一些全局变量,但是使用&并行执行sqoop是必需的。

关于hadoop - 如何在oozie中创建/声明全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40006443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com