1.shell节点参数传递
第一步:在shell节点编辑器中将想要传递的变量输出:
# !/bin/bash
test='test123'
echo "test:$test"
第二步:节点高级属性中勾选捕获输出:
第三步:其他节点获取想要的变量:
${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();
}
第二步:节点高级属性中勾选捕获输出:
第三步:其他节点获取想要的变量同上
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节点:
Shell节点:
hive节点: