Oozie分布式工作流——EL表达式
oozie支持使用EL(expression language)表达式。
基本的EL常量
- KB
- MB
- GB
- TB
- PB
基本EL函数
string firstNotNull(String value1,String value2)
返回第一个不为空的值,如果都为null,则返回null
string concat(String s1,String s2)
拼接两个字符串,如果一个为null,拼接的字符串为空
string replaceAll(String src,String regex,String replacement)
替换正则表达式匹配的位置。如果regex为null,则什么也不做。如果replacement为null,则替换为空串
string appendAll(String src,String append,String delimeter)
把append字符串添加到切分后的字符串中。比如appendAll("a,b,c","123",",")
将会返回a123,b123,c123
。append为null代表返回空串,delimiter为null,代表什么也不做。
string trim(String s)
给指定的字符串去除空格
String urlEncode(String s)
URL解码
String timestamp()
返回当前的时间戳,并格式化为yyyy-MM-ddTHH:mmZ
,到分钟粒度。
String toJsonStr(Map)
把Map返回成json,这在获取前一个action的输出内容时比较有用。比如wf:actionData(String actionName)格式化为json
String toPropertiesStr(Map)
把Map返回成Java Properties
String toConfigurationStr(Map)
把Map返回成Configuration
工作流EL函数
String wf:id()
获取当前工作流节点的id
String wf:name()
获取当前工作流的名称
String wf:appPath()
获取当前工作流workflow.xml所在的目录
String wf:conf(String name)
返回当前工作流的属性值
String wf:user()
返回启动当前工作流的用户
String wf:group()
返回当前工作流的组
String wf:callback(String stateVar)
返回当前工作流的回调,stateVar可以指定成某个状态,也可以传一个参数可以在远程进行替换
String wf:transition(String node)
返回工作流的状态
String wf:lastErrorNode()
返回当前工作流退出的状态
String wf:errorCode(String node)
返回特定node的错误代码
String wf:errorMessage(String message)
返回出错的主要信息
int wf:run()
返回当前工作流任务的标志,0代表正常
Map wf:actionData(String node)
返回指定节点输出的内容,需要配合<capture-output>
标签使用
int wf:actionExternalId(String node)
返回节点的外部id
int wf:actionTrakerUri(String node)
返回当前节点的uri
int wf:actionExternalStatus(String node)
返回指定节点的外部状态
Hadoop EL常量
- RECORDS
- MAP_IN
- MAP_OUT
- REDUCE_IN
- REDUCE_OUT
- GROUPS
Hadoop 任务EL函数的例子
<workflow-app xmlns="uri:oozie:workflow:0.2" name="pig-wf">
<start to="pig-node"/>
<action name="pig-node">
<pig>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/pig"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
</configuration>
<script>id.pig</script>
<param>INPUT=/user/${wf:user()}/${examplesRoot}/input-data/text</param>
<param>OUTPUT=/user/${wf:user()}/${examplesRoot}/output-data/pig</param>
</pig>
<ok to="java1"/>
<error to="fail"/>
</action>
<action name="java1">
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<main-class>MyTest</main-class>
<arg> ${wf:actionData("pig-node")["hadoopJobs"]}</arg>
<capture-output/>
</java>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Pig failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
hdfs el方法
boolean fs:exists(String path)
判断指定的URI是否存在
boolean fs:isDir(String path)
判断是否是目录
long fs:dirSize(String path)
返回指定目录下的所有文件的大小。如果不是目录,返回-1。它不支持嵌套,只能返回下面一层的文件大小
long fs:fileSize(String path)
返回指定文件的大小,如果不是文件,返回-1
long fs:blockSize(String path)
返回指定文件占用的block大小。如果不是file,返回-1
Oozie分布式工作流——EL表达式的更多相关文章
- Oozie分布式工作流——Action节点
前篇讲述了下什么是流控制节点,本篇继续来说一下什么是 Action Nodes操作节点.Action节点有一些比较通用的特性: Action节点是远程的 所有oozie创建的计算和处理任务都是异步的, ...
- Oozie分布式工作流——从理论和实践分析使用节点间的参数传递
Oozie支持Java Action,因此可以自定义很多的功能.本篇就从理论和实践两方面介绍下Java Action的妙用,另外还涉及到oozie中action之间的参数传递. 本文大致分为以下几个部 ...
- oozie中时间EL表达式
EL表达式: 常量表示形式 含义说明 ${coord:minutes(int n)} 返回日期时间:从一开始,周期执行n分钟 ${coord:hours(int n)} 返回日期时间:从一开始,周期执 ...
- Oozie分布式工作流——流控制
最近又开始捅咕上oozie了,所以回头还是翻译一下oozie的文档.文档里面最重要就属这一章了--工作流定义. 一提到工作流,首先想到的应该是工作流都支持哪些工作依赖关系,比如串式的执行,或者一对多, ...
- Oozie分布式任务的工作流——邮件篇
在大数据的当下,各种spark和hadoop的框架层出不穷.各种高端的计算框架,分布式任务如乱花般迷眼.你是否有这种困惑!--有了许多的分布式任务,但是每天需要固定时间跑任务,自己写个调度,既不稳定, ...
- Oozie分布式任务的工作流——脚本篇
继前一篇大体上翻译了Email的Action配置,本篇继续看一下Shell的相关配置. Shell Action Shell Action可以执行Shell脚本命令,工作流会等到shell完全执行完毕 ...
- Oozie分布式任务的工作流——Sqoop篇
Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL ...
- 分布式工作流任务调度系统Easy Scheduler正式开源
分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...
- jsp页面无法识别el表达式的解决方案
今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...
随机推荐
- 内存分配方式,堆区,栈区,new/delete/malloc/free
1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. [2]在栈上创建.在执行函数时 ...
- PYTHON-模块 logging hashlib
'''import logging # 1. 控制日志级别# 2. 控制日志格式# 3. 控制输出的目标为文件logging.basicConfig(filename='access.log', fo ...
- PYTHON-函数对象,嵌套,名称空间与作用域,闭包函数
一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo pri ...
- python for dl
算是python的简明教程吧,总结的不错: https://zhuanlan.zhihu.com/p/24162430 python for opencv: https://zhuanlan.zhih ...
- __dirname与__filename
(1) __filename变量 node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名. 在应用程序根目录下新建app.js文件,其中代码如 ...
- CSS的vertical-align
转载自https://blog.csdn.net/FE_dev/article/details/75948659 说明 vertical-align属性,是CSS属性中一个比较重要的属性,也是比较不好 ...
- js之观察者模式
观察者模式: 大体上是, 1.松耦合的代码: 2.一对多的关系: 3.主体状态变化时,所有依赖被通知: 4.主体和观察者互不知晓. 基本上,满足上面四点的,就可以算是观察者模式了.来看一个demo, ...
- lnmp创建站点
一.创建站点 1.输入命令 lnmp vhost add 输入域名 www.xxx.com 回车 回车 回车 y创建 n不创建 网站如果有目录权限 更改目录权限 chown -R www:www /h ...
- hdu4533 线段树维护分段函数
更新:x1,y1,x2,y2不用long long 会wa.. #include<iostream> #include<cstring> #include<cstdio& ...
- noip 2017 时间复杂度
自认为是少有的复杂的代码 这题思想很简单,就是大模拟 对于for循环,一行读入4个字符串,然后分类讨论: ①:如果是一个正常的O(n),那么累计n的指数加1 ②:如果是一个常数级别的,那么继续循环,但 ...