Esper系列(二)时间窗口、长度窗口、cast、注解、自定义函数、静态方法
来源:互联网 发布:莆田涵江淘宝培训 编辑:程序博客网 时间:2024/06/08 12:24
说明:
上图长度窗口为5,事件W1至W5进入引擎后属于NewEvents队列,事件W6进入引擎后,W2至W6就属于NewEvents队列,而事件W1就属于OldEvents队列了。NewEvents为先进先出队列,队列长度为EPL语句中制定的长度窗口大小,OldEvent队列为过期数据的存放队列。
EPL长度窗口示例
时间窗口实现原理图
说明:
从此图可以看出,随着时间推移,每个进入到引擎的W事件都是newEvents,即Insert Stream。W后括号里的值为属性值(可忽略),超过EPL语句设置的时间窗口值的事件将进入OldEvent队列.
时间周期格式
year-part : (number|variable_name) ("years" | "year")
month-part : (number|variable_name) ("months" | "month")
week-part : (number|variable_name) ("weeks" | "week")
day-part : (number|variable_name) ("days" | "day")
hour-part : (number|variable_name) ("hours" | "hour")
minute-part : (number|variable_name) ("minutes" | "minute" | "min")
seconds-part : (number|variable_name) ("seconds" | "second" | "sec")
milliseconds-part : (number|variable_name) ("milliseconds" | "millisecond" | "msec")
EPL时间窗口示例
数据类型转换(cast)
示例:
Annotation(注解)
- @Name 指定EPL的名称,参数只有一个。例如:@Name("MyEPL")
- @Description 对EPL进行描述,参数只有一个。例如:@Description("Hello World")
- @Tag 对EPL进行额外的说明,参数有两个,分别为Tag的名称和Tag的值,用逗号分隔。例如:@Tag(name="author",value="luonanqin")
- @Priority 指定EPL的优先级,参数只有一个,并且整数(可负可正)。例如:@Priority(10)
- @Drop 指定事件经过此EPL后不再参与其他的EPL计算,该注解无参数。
- @Hint 为EPL加上某些标记,让引擎对此EPL产生其它的操作,会改变EPL实例的内存占用,但通常不会改变输出。其参数固定,由Esper提供。
- @Audit EPL添加此注解后,可以额外输出EPL运行情况,有点类似日志的感觉(当然没有日志的功能全啦)。
- @Hook 与SQL相关。
- @EventRepresentation 这是用来指定EPL产生的计算结果事件包含的数据形式。参数只有一个,即array=true或array=false。false为默认值,代表数据形式为Map,若为true,则数据形式为数组。
示例:
Expression(自定义函数)
格式:
Expression expression_name { expression_body }
expression_name为自定义的Expression名,expression_body为Expression的具体内容。
expression_body表现形式为:(input_param[,…] ]) => expression
input_param为事件流别名(不能和事件流同名)
示例:
自定义静态方法的应用
示例(事件流过滤)
注意:
1、要过滤的属性只能是数字和字符串。
2、过滤表达式中不能使用聚合函数。
示例(事件流转换输出)
通过自定义类的静态方法转换事件流的输出属性。
BaseUntil.java(静态方法实现类)
- Esper系列(二)时间窗口、长度窗口、cast、注解、自定义函数、静态方法
- Esper 视图 Views窗口语法
- 【Flink系列2】时间窗口
- Windows 消息【二】窗口函数
- Esper系列(七)数据缓存、外部事件应用(静态方法)
- 自定义窗口
- 自定义窗口
- TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息(转)
- MFC技术系列(二)--窗口消息(1)
- MFC技术系列(二)--窗口消息(2)
- MFC技术系列(二)--窗口消息(3)
- MFC技术系列(二)--窗口消息(4)
- Java 弹出窗口系列之 二
- 自定义窗口的移动(二)
- 快速弹出窗口的(二):自定义toast
- 用定时器显示时间 窗口过程函数
- Hive分析窗口函数系列文章
- 自定义的窗口居中函数--CentreWindow
- Storm系列(五)架构分析之Nimbus启动过程
- Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]
- Storm系列(七)架构分析之Scheduler-调度器[DefaultScheduler]
- 中国计算机学会推荐国际学术会议和期刊目录——网络与信息安全
- Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
- Esper系列(二)时间窗口、长度窗口、cast、注解、自定义函数、静态方法
- lucene多种查询方式
- eclipse中variable references non-existion resource可能原因及解决方案
- Storm系列(十)聚流示例
- Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
- Storm系列(十二)架构分析之Worker-心跳信息处理
- 实验9 问题 D: 编写函数:字符串的复制 之二 (Append Code)
- Bugly错误监测Android SDK接入
- OpenGL管线(用经典管线代说着色器内部)