摘要:
除了KeyedProcessFunction,另外一大类常用的处理函数,就是基于窗口的ProcessWindowFunction和ProcessAllWindowFunction了. 1、窗口处理函数的使用 进行窗口计算,可以直接调用现成的简单聚合方法(sum/max/min),也可以通过调用.re 阅读全文
摘要:
Centos7 关闭防火墙 关闭防火墙 systemctl stop firewalld 关闭开机自启 systemctl disable firewalld.service Centos6 关闭防火墙 关闭防火墙 service iptables stop 关闭开机自启 chkconfig ipt 阅读全文
摘要:
在Flink程序中,为了实现数据的聚合统计,或者开窗计算之类的功能,一般都要先用keyBy算子对数据流进行“按键分区”,得到一个KeyedStream。也就是指定一个键(key),按照它的哈希值(hash code)将数据分成不同的“组”,然后分配到不同的并行子任务上执行计算;这相当于做了一个逻辑分 阅读全文
摘要:
1、联合(Union) 最简单的合流操作,就是直接将多条流合在一起,叫作流的“联合”(union),如下图所示。联合操作要求必须流中的数据类型必须相同,合并之后的新流会包括所有流中的元素,数据类型不变。这种合流方式非常简单粗暴,就像公路上多个车道汇在一起一样 在代码中,只要基于DataStream直 阅读全文
摘要:
处理函数主要是定义数据流的转换操作,所以也可以把它归到转换算子中。在Flink中几乎所有转换算子都提供了对应的函数类接口,处理函数也不例外;它所对应的函数类,就叫作ProcessFunction。 1、处理函数的功能和使用 之前学习的转换算子,一般只是针对某种具体操作来定义的,能够拿到的信息比较有限 阅读全文
摘要:
有了事件时间、水位线和窗口的相关知识,现在就可以系统性地讨论一下怎样处理迟到数据了。所谓的“迟到数据”(late data),是指某个水位线之后到来的数据,它的时间戳其实是在水位线之前的。所以只有在事件时间语义下,讨论迟到数据的处理才是有意义的。事件时间里用来表示时钟进展的就是水位线(waterma 阅读全文
摘要:
增量聚合和全窗口函数的对比 已经了解了Window API中两类窗口函数的用法,下面先来做个简单的总结。增量聚合函数处理计算会更高效。举一个最简单的例子,对一组数据求和。大量的数据连续不断到来,全窗口函数只是把它们收集缓存起来,并没有处理;到了窗口要关闭、输出结果的时候,再遍历所有数据依次叠加,得到 阅读全文
摘要:
与增量聚合函数不同,全窗口函数需要先收集窗口中的数据,并在内部缓存起来,等到窗口要输出结果的时候再取出数据进行计算。很明显,这就是典型的批处理思路了——先攒数据,等一批都到齐了再正式启动处理流程。这样做毫无疑问是低效的:因为窗口全部的计算任务都积压在了要输出结果的那一瞬间,而在之前收集数据的漫长过程 阅读全文
摘要:
一般来说,Flink内置的水位线生成器就可以满足应用需求了。不过有时由于业务逻辑可能非常复杂,这时对水位线生成的逻辑也有更高的要求,开发人员就必须自定义实现水位线策略WatermarkStrategy了。在WatermarkStrategy中,时间戳分配器TimestampAssigner都是大同小 阅读全文
摘要:
实现 SourceFunction 大多数情况下,Flink自身支持的数据源已经能够满足需要。但是凡事总有例外,如果遇到特殊情况,想要读取的数据源来自某个外部系统,而flink既没有预实现的方法、也没有提供连接器,那就只好自定义实现SourceFunction了。接下来创建一个自定义的数据源,实现S 阅读全文