【新手入门】Oozie workflow如何在action之间传递参数
接触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之间传递参数相关推荐
- java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解
脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...
- QTP的Action之间传递参数
首先在KeyWord View,右击action1,Action Properties,在弹出的窗口中选择Parameters菜单项,在Input parameters添加变量(变量名为i). 然后在 ...
- Angular 路由时如何在 Component 之间传递参数
官网 把 ActivatedRoute 和 ParamMap 导入你的组件. import { Router, ActivatedRoute, ParamMap } from '@angular/ro ...
- Asp.net页面之间传递参数的几种方法
Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx: protected void Button1_Clic ...
- java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进
两个项目之间传递参数问题 --- 大神进 情况 1.两个ssh项目 oms 与 GiftERP 2.调用的是GiftERP的一个Goods表,需要将表数据返回给oms项目 3.首先我oms的页面有一 ...
- React 组件之间传递参数
其实react组件之间传递参数是比较简单的,但是没有具体的使用过,组件之间传递参数是比较常见的事情,所以记录一下,防止以后自己在网上胡乱的翻找 最近做了一个商品的列表页面,我想通过点击修改能够实现商品 ...
- [html] 在两个iframe之间传递参数的方法有哪些?
[html] 在两个iframe之间传递参数的方法有哪些? 通过postMessage与父级通过,父级传递消息通过websocket通信如果是同一个域名下可用stroage,监听storageChan ...
- Android10apk怎么传数据,Android不同apk之间传递参数与数据
转载出处:http://dongyang555-126-com.iteye.com/blog/1308586 android编程的时候,有时候需要在不同的apk之间传递参数或数据,下面是一个简单的例子 ...
- jmeter解决不同线程组之间传递参数问题
jmeter解决不同线程组之间传递参数问题 参考文章: (1)jmeter解决不同线程组之间传递参数问题 (2)https://www.cnblogs.com/yingchen/p/5110335.h ...
最新文章
- Mybatis复习笔记3:映射文件详解
- 【MATLAB】数据分析之数据插值
- PageAdmin CMS网站建设教程:如何实现信息的定时发布
- MediaSource 非当前窗口
- using namespace cv_闪耀暖暖万圣节非凡魔女南瓜套公开 消耗钻石获取 大喵无CV
- 后台数据到mysql怎样保持实时更新_京东智联云MySQL数据库如何保障数据的可靠性?...
- React Native – 使用 JavaScript 开发原生应用
- Python学习笔记(五)--Python数据类型-数字及字符串
- k近邻算法_K近邻算法(一)
- js生成java uuid_JS生成UUID 前端UUID
- win10安装打印机操作无法完成0x0000007e找不到指定模块
- 头腾大战,用户的头像到底属于谁的?
- C# GridView 冻结列 冻结表头
- 医学影像数据格式转换(.mha转.jpg)
- 【总结】AWS的(助理)架构师认证体系详解
- VB基础版版务处理_20050226
- [导入]MAGIC CYNDI魔幻心凌
- 浪潮服务器销售量,35.6%市占率,浪潮服务器成为中国服务器市场“销量王”
- IOS成长之路-调用照相机和相册功能
- python集成Tesseract-OCR实现光学字符识别
热门文章
- 费米问题-如何估算芝加哥的钢琴调音师的人数?
- (个人)AR电子书创新系统实训第四周(1)
- 正则表达式 1-100的整数
- 计算机等级考access,计算机等级考试二级ACCESS窗体
- 华为战略部门研究山寨机决定出售手机部门
- 【学术论文写作】03 从词汇过渡到语法
- python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总
- python 匿名函数示例_扣丁学堂Python3开发之匿名函数用法示例详解
- 微信小程序可以用python开发吗_微信小程序可以用python开发吗
- 计算机二级试题第12套,计算机等级考试二级VFP机试试题12