oozie action参数传递

1.shell节点参数传递

 

第一步:在shell节点编辑器中将想要传递的变量输出:

# !/bin/bash

test='test123'

echo "test:$test"

 

第二步:节点高级属性中勾选捕获输出:

oozie action参数传递_第1张图片

 

第三步:其他节点获取想要的变量:

${wf:actionData(nodeName).variableName}

nodeName:想要获取输出变量的节点名称

variableName:想要获取的变量名称

 

2.java节点参数传递

 

第一步:上传的jar包中想要输出的变量抛出

try {

File file = new File(System.getProperty("oozie.action.output.properties"));

Properties props = new Properties();

        props.setProperty(propKey0, propVal0);//变量以key、value形式输出

props.setProperty(propKey1, propVal1);

        OutputStream os;

os = new FileOutputStream(file);

props.store(os, "");

os.close();

 

} catch (Exception e) {

e.printStackTrace();

}

 

第二步:节点高级属性中勾选捕获输出:

 

oozie action参数传递_第2张图片

第三步:其他节点获取想要的变量同上

 

3.rdms节点参数传递

 

第一步:在rdms节点编辑器中将想要传递的变量输出:

#@output(maxID=max,minID=min)

select max(id) as max,min(id) as min  from desktop_document2 limit ${limit}

 

@output():固定注解,捕获输出,代码遇到这个会处理

括号里面如果有多个输出变量用逗号输出

maxID:输出的变量名称

max:执行sql语句获得结果的别名

 

第二步:其他节点的获取

${wf:actionData('test').minID}

 

4.hive节点参数传递

原生oozie并不支持hive节点的捕获参数,可以通过shell节点执行hive sql,然后将需要传递的参数输出。

 

第一步:在shell的编辑器中编写:

# !/bin/bash

hive_test_count=`hive -e "select max(id) from griffin.demo_src"`

echo "hive_test_count=$hive_test_count"

 

第二步:其他节点的获取变量:

${wf:actionData('gas').hive_test_count}

 

5.sparksql节点参数的传递,oozie源码不支持spark类型的参数传递,通过shell的方式执行spark-sql,由于cdh目前不支持这个命令,所以也行不通。

sparksql和hive其实执行的都是对hive的操作,结果都是一样的,可以也像hive一样通过shell调用。

 

附:关于获取变量填写的示例:主要是以下几种,其他节点按照对应方式填写即可。

rdms节点:

oozie action参数传递_第3张图片

 

Shell节点:

oozie action参数传递_第4张图片

hive节点:

 

oozie action参数传递_第5张图片

 

 

你可能感兴趣的:(bigdata)