接触oozie时间并不长,半个月有余,对其十分好用的action管理模式以及各种工作流控制欲罢不能,可惜中文的文档真心少。

上周发现了这样一个问题,虽然说oozie workflow很方便工作流的建立和控制,但是oozie的参数大多定义在job.properties中,然后一次性载入oozie环境中,在runtime下很难在各个action之间传递参数,所以相比于python和shell script版的pipeline, 参数的传递着实不方便,去查询官网oozie文档,查了网上一些解答,下面直接上代码,新手入门级,大大们见谅。

job.properties

# Cluster settings
nameNode=hdfs://sandbox:8020
jobTracker=sandbox:50300appName=var_demooozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/${appName}/
oozie.libpath=/user/oozie/share/lib
oozie.wf.rerun.failnodes=true
queueName=default

workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.4" name="cip_poi_etl_workflow">
<start to="get_var"/><action name="get_var"><shell xmlns="uri:oozie:shell-action:0.1"><job-tracker>${jobTracker}</job-tracker><name-node>${nameNode}</name-node><configuration><property><name>mapred.job.queue.name</name><value>${queueName}</value></property></configuration><exec>input.sh</exec><file>input.sh</file><capture-output/> </shell><ok to="use_var" /><error to="send_email" /></action><action name="use_var"><shell xmlns="uri:oozie:shell-action:0.1"><job-tracker>${jobTracker}</job-tracker><name-node>${nameNode}</name-node><configuration><property><name>mapred.job.queue.name</name><value>${queueName}</value></property></configuration><exec>output.sh</exec><argument>${wf:actionData('get_var')['var']}</argument><file>output.sh</file></shell><ok to="end" /><error to="send_email" /></action><action name="send_email"><email xmlns="uri:oozie:email-action:0.1"><to>${emailTo}</to><subject>Status of workflow ${wf:id()}</subject><body>The workflow ${wf:id()} had issues and was killed. The error message is: ${wf:errorMessage(wf:lastErrorNode())}</body></email><ok to="fail"/><error to="fail"/></action><kill name="fail"><message>Failed, Error Message[${wf:errorMessage(wf:lastErrorNode())}]</message></kill><end name="end"/>
</workflow-app>

input.sh

echo var=var_test_result

output.sh

hadoop fs -mkdir /user/hue/$1

注意两个地方:

<capture-output/> :它的作用是是告诉oozie,这个action的输出要被oozie运行存储下来。

${wf:actionData('get_var')['var']}: 它的作用是说我要调用“get_var”这个action捕捉到的那个输出的其中一个参数。

然后就能实现相互传递参数了。


唯一需要注意的一点是,capture-output 中的结果必须是java property 格式,例如上面例子中的:var=var_test_result

这个只是个简单的传递参数的例子,当然你也可以写一个java class,py class,甚至hive结果,要求很简单,只要你的输出是上面这个格式的,oozie就能找到并使用。

【新手入门】Oozie workflow如何在action之间传递参数相关推荐

  1. java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解

    脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...

  2. QTP的Action之间传递参数

    首先在KeyWord View,右击action1,Action Properties,在弹出的窗口中选择Parameters菜单项,在Input parameters添加变量(变量名为i). 然后在 ...

  3. Angular 路由时如何在 Component 之间传递参数

    官网 把 ActivatedRoute 和 ParamMap 导入你的组件. import { Router, ActivatedRoute, ParamMap } from '@angular/ro ...

  4. Asp.net页面之间传递参数的几种方法

    Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx:    protected void Button1_Clic ...

  5. java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进

    两个项目之间传递参数问题 --- 大神进 情况 1.两个ssh项目 oms  与 GiftERP 2.调用的是GiftERP的一个Goods表,需要将表数据返回给oms项目 3.首先我oms的页面有一 ...

  6. React 组件之间传递参数

    其实react组件之间传递参数是比较简单的,但是没有具体的使用过,组件之间传递参数是比较常见的事情,所以记录一下,防止以后自己在网上胡乱的翻找 最近做了一个商品的列表页面,我想通过点击修改能够实现商品 ...

  7. [html] 在两个iframe之间传递参数的方法有哪些?

    [html] 在两个iframe之间传递参数的方法有哪些? 通过postMessage与父级通过,父级传递消息通过websocket通信如果是同一个域名下可用stroage,监听storageChan ...

  8. Android10apk怎么传数据,Android不同apk之间传递参数与数据

    转载出处:http://dongyang555-126-com.iteye.com/blog/1308586 android编程的时候,有时候需要在不同的apk之间传递参数或数据,下面是一个简单的例子 ...

  9. jmeter解决不同线程组之间传递参数问题

    jmeter解决不同线程组之间传递参数问题 参考文章: (1)jmeter解决不同线程组之间传递参数问题 (2)https://www.cnblogs.com/yingchen/p/5110335.h ...

最新文章

  1. Mybatis复习笔记3:映射文件详解
  2. 【MATLAB】数据分析之数据插值
  3. PageAdmin CMS网站建设教程:如何实现信息的定时发布
  4. MediaSource 非当前窗口
  5. using namespace cv_闪耀暖暖万圣节非凡魔女南瓜套公开 消耗钻石获取 大喵无CV
  6. 后台数据到mysql怎样保持实时更新_京东智联云MySQL数据库如何保障数据的可靠性?...
  7. React Native – 使用 JavaScript 开发原生应用
  8. Python学习笔记(五)--Python数据类型-数字及字符串
  9. k近邻算法_K近邻算法(一)
  10. js生成java uuid_JS生成UUID 前端UUID
  11. win10安装打印机操作无法完成0x0000007e找不到指定模块
  12. 头腾大战,用户的头像到底属于谁的?
  13. C# GridView 冻结列 冻结表头
  14. 医学影像数据格式转换(.mha转.jpg)
  15. 【总结】AWS的(助理)架构师认证体系详解
  16. VB基础版版务处理_20050226
  17. [导入]MAGIC CYNDI魔幻心凌
  18. 浪潮服务器销售量,35.6%市占率,浪潮服务器成为中国服务器市场“销量王”
  19. IOS成长之路-调用照相机和相册功能
  20. python集成Tesseract-OCR实现光学字符识别

热门文章

  1. 费米问题-如何估算芝加哥的钢琴调音师的人数?
  2. (个人)AR电子书创新系统实训第四周(1)
  3. 正则表达式 1-100的整数
  4. 计算机等级考access,计算机等级考试二级ACCESS窗体
  5. 华为战略部门研究山寨机决定出售手机部门
  6. 【学术论文写作】03 从词汇过渡到语法
  7. python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总
  8. python 匿名函数示例_扣丁学堂Python3开发之匿名函数用法示例详解
  9. 微信小程序可以用python开发吗_微信小程序可以用python开发吗
  10. 计算机二级试题第12套,计算机等级考试二级VFP机试试题12