Oozie分布式工作流——EL表达式
来源:互联网 发布:网络架构师考试 编辑:程序博客网 时间:2024/05/17 09:38
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分布式工作流——EL表达式
- Oozie分布式任务的工作流——Sqoop篇
- Oozie分布式任务的工作流——Spark篇
- Oozie分布式任务的工作流——Sqoop篇
- hadoop上的工作流调度——oozie
- EL表达式—简介
- HAWQ取代传统数仓实践(五)——自动调度工作流(Oozie、Falcon)
- Oozie教程(1)——实现你自己的Hadoop/Spark作业工作流
- JavaWeb —— EL表达式
- JavaWeb —— EL表达式
- JSP——EL表达式
- jsp——el表达式
- JSP——EL表达式
- EL表达式—学习笔记
- Oozie工作流简介
- 创建 Oozie 工作流 失败
- 创建Oozie工作流
- Mac 下Android Studio2.3更新Gradle3.3踩坑记录
- onvif在android上实现局域网搜索得到当前编码配置
- 关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
- 字符串转为整数
- Android Studio下修改应用的包名
- Oozie分布式工作流——EL表达式
- Android软件设计架构简介
- 整数分解为若干项之和——递归思想
- winuser.h中的sendMessage函数
- python 学习笔记
- swift设计模式学习
- 初学C语言,几种利用嵌套循环的字母打印格式
- C++中的static关键字的总结
- Servlet 3.0 新特性概述