Flink 学习笔记四

2017/06/26 Flink

Flink2 学习笔记四

Aggregations

DataStream API 有max,min,sum等聚合操作。可以用在KeyedDataStream上。 如: Java:

keyedInputStream.sum(0) 
keyedInputStream.sum("key") 
keyedInputStream.min(0) 
keyedInputStream.min("key") 
keyedInputStream.max(0) 
keyedInputStream.max("key") 
keyedInputStream.minBy(0) 
keyedInputStream.minBy("key") 
keyedInputStream.maxBy(0) 
keyedInputStream.maxBy("key")

Scala:

keyedInputStream.sum(0) 
keyedInputStream.sum("key") 
keyedInputStream.min(0) 
keyedInputStream.min("key") 
keyedInputStream.max(0) 
keyedInputStream.max("key") 
keyedInputStream.minBy(0) 
keyedInputStream.minBy("key") 
keyedInputStream.maxBy(0) 
keyedInputStream.maxBy("key")

max和maxBy都是返回最值,但是maxBy是返回最值的Key。

Window

window函数允许现在的KeyedDataStreams根据时间或者是其它条件取窗口进行操作。如下述代码,10秒钟的数据窗口: Java:

inputStream.keyBy(0).window(TumblingEventTimeWindows.of(Time.seconds(10)))

Scala:

inputStream.keyBy(0).window(TumblingEventTimeWindows.of(Time.seconds(10)))

数据流会自动划分成小份数据,这些小份数据被称为窗口,使得flink可以批量处理数据。窗口之前需要把数据指定Key来划分数据,Flink中内置了一些窗口函数,Tumbling,sliding,global和session窗口,同时运行扩展Window-Assigner类来自定义窗口化函数 。

Global windows

是触发后就没有尽头的窗口,第一条数据都会指定一定单一Key划分的窗口。如果不指定触发器,没不会有计算会被触发。

Tumbling windows

根据次数触发的窗口,这些窗口的长度是固定的,而且窗口的数据是不会重叠的。需要按照时间长度计算数据的时候,这个功能是很有用的。

Sliding windows

同Tumbling相同,但是数据可以重叠,也就是滑动窗口机制的。

Session windows

窗口边界和数据无关,能够灵活定义窗口开始的时间和大小。

Show Disqus Comments

Search

    Table of Contents