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表达式的更多相关文章

  1. Oozie分布式工作流——Action节点

    前篇讲述了下什么是流控制节点,本篇继续来说一下什么是 Action Nodes操作节点.Action节点有一些比较通用的特性: Action节点是远程的 所有oozie创建的计算和处理任务都是异步的, ...

  2. Oozie分布式工作流——从理论和实践分析使用节点间的参数传递

    Oozie支持Java Action,因此可以自定义很多的功能.本篇就从理论和实践两方面介绍下Java Action的妙用,另外还涉及到oozie中action之间的参数传递. 本文大致分为以下几个部 ...

  3. oozie中时间EL表达式

    EL表达式: 常量表示形式 含义说明 ${coord:minutes(int n)} 返回日期时间:从一开始,周期执行n分钟 ${coord:hours(int n)} 返回日期时间:从一开始,周期执 ...

  4. Oozie分布式工作流——流控制

    最近又开始捅咕上oozie了,所以回头还是翻译一下oozie的文档.文档里面最重要就属这一章了--工作流定义. 一提到工作流,首先想到的应该是工作流都支持哪些工作依赖关系,比如串式的执行,或者一对多, ...

  5. Oozie分布式任务的工作流——邮件篇

    在大数据的当下,各种spark和hadoop的框架层出不穷.各种高端的计算框架,分布式任务如乱花般迷眼.你是否有这种困惑!--有了许多的分布式任务,但是每天需要固定时间跑任务,自己写个调度,既不稳定, ...

  6. Oozie分布式任务的工作流——脚本篇

    继前一篇大体上翻译了Email的Action配置,本篇继续看一下Shell的相关配置. Shell Action Shell Action可以执行Shell脚本命令,工作流会等到shell完全执行完毕 ...

  7. Oozie分布式任务的工作流——Sqoop篇

    Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL ...

  8. 分布式工作流任务调度系统Easy Scheduler正式开源

    分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...

  9. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

随机推荐

  1. React-Native 之 网络请求 fetch

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  2. rsa加密解密, 非对称加密

    2016年3月17日 17:21:08 星期四 现在越来越懒了.... 参考: http://www.xuebuyuan.com/1399981.html 左边是加密流程, 右边是解密流程 呃...有 ...

  3. Weex学习资料整合

    1.weex weex文档:http://weex.apache.org/cn/guide/index.html Weex Ui awesome-weex WEEX免费视频教程-从入门到放肆 (共17 ...

  4. 使用Springboot快速搭建SSM框架

    Spring Boot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 一.环境准备 Idea 2017 或 201 ...

  5. Java基础100 待续

    1.待续 原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/107 ...

  6. 【python】已安装模块提示ImportError: No module named

    今天遇到了一个问题,运行代码时出现错误 Traceback (most recent call last): File , in <module> import zmq ImportErr ...

  7. Luogu P4944 【PION贪吃蛇】

    简单模拟题 用一个数据结构存储这条蛇 考虑蛇的移动 1,如果死了,就把整个蛇清空,所有位置标记为食物 2,如果吃了东西,把这个位置更新为蛇头 3,如果正常走路,这个位置设为蛇头,同时删掉尾巴 蛇的存储 ...

  8. python 全栈开发,Day97(Token 认证的来龙去脉,DRF认证,DRF权限,DRF节流)

    昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 ...

  9. JS高级 - 面向对象3(面向过程改写面向对象)

    改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: t ...

  10. 【BZOJ3307】雨天的尾巴

    题解: win下的10mb和linux下的好像不是很一样 明天再看看 求lca用的离线求,注意bz数组开2*n 这道题的线段树合并还是很好想的 我们只要把操作差分一下就好了 时间复杂度nlogn的 写 ...