flink中提供的大量的算子信轿,下面將介紹常用的算子操作方式:
map
DataStream --> DataStream:輸入一個(gè)參數(shù)產(chǎn)生一個(gè)參數(shù),map的功能是對(duì)輸入的參數(shù)進(jìn)行轉(zhuǎn)換操作接谨。flatMap
DataStream --> DataStream:輸入一個(gè)參數(shù),產(chǎn)生0、1或者多個(gè)輸出,這個(gè)多用于拆分操作filter
DataStream --> DataStream:結(jié)算每個(gè)元素的布爾值滚婉,并返回為true的元素keyBy
DataSteam --> DataStream:邏輯地將一個(gè)流拆分成不相交的分區(qū),每個(gè)分區(qū)包含具有相同key的元素帅刀,在內(nèi)部以hash的形式實(shí)現(xiàn)的让腹。以key來(lái)分組。
注意:以下類(lèi)型無(wú)法作為key
1. POJO類(lèi)扣溺,且沒(méi)有實(shí)現(xiàn)hashCode函數(shù)
2. 任意形式的數(shù)組類(lèi)型reduce
KeyedStream --> DataStream:滾動(dòng)和并操作骇窍,合并當(dāng)前元素和上一次合并的元素結(jié)果。fold
KeyedStream --> DataStream:用一個(gè)初始的一個(gè)值锥余,與其每個(gè)元素進(jìn)行滾動(dòng)合并操作腹纳。aggregation
KeyedStream --> DataStream:分組流數(shù)據(jù)的滾動(dòng)聚合操作:min和minBy的區(qū)別是min返回的是一個(gè)最小值,而minBy返回的是其字段中包含的最小值的元素(同樣元原理適用于max和maxBy)window
KeyedStream --> DataStream:windows是在一個(gè)分區(qū)的KeyedStreams中定義的驱犹,windows根據(jù)某些特性將每個(gè)key的數(shù)據(jù)進(jìn)行分組(例如:在5s內(nèi)到達(dá)的數(shù)據(jù))嘲恍。windowAll
DataStream --> AllWindowedStream:Windows可以在一個(gè)常規(guī)的DataStream中定義,Windows根據(jù)某些特性對(duì)所有的流(例如:5s內(nèi)到達(dá)的數(shù)據(jù))雄驹。
注意:這個(gè)操作在很多情況下都不是并行操作的佃牛,所有的記錄都會(huì)聚集到一個(gè)windowAll操作的任務(wù)中window apply
WindowedStream --> DataStream
AllWindowedStream --> DataStream:將一個(gè)通用的函數(shù)作為一個(gè)整體傳遞給window。window reduce
WindowedStream --> DataStream:給窗口賦予一個(gè)reduce的功能医舆,并返回一個(gè)reduce的結(jié)果俘侠。window fold
WindowedStream --> DataStream:給窗口賦予一個(gè)fold的功能象缀,并返回一個(gè)fold后的結(jié)果。aggregation on windows
WindowedStream --> DataStream:對(duì)window的元素做聚合操作爷速,min和minBy的區(qū)別是min返回的是最小值央星,而minBy返回的是包含最小值字段的元素。(同樣原理適用于max和maxBy)union
DataStream --> DataStream:對(duì)兩個(gè)或兩個(gè)以上的DataStream做union操作遍希,產(chǎn)生一個(gè)包含所有的DataStream元素的新DataStream等曼。
注意:如果將一個(gè)DataStream和自己做union操作,在新的DataStream中凿蒜,將看到每個(gè)元素重復(fù)兩次window join
DataStream禁谦,DataStream --> DataStream:根據(jù)給定的key和window對(duì)兩個(gè)DataStream做join操作window coGroup
DataStream,DataStream --> DataStream:根據(jù)一個(gè)給定的key和window對(duì)兩個(gè)DataStream做CoGroups操作废封。connect
DataStream州泊,DataStream --> ConnectedStreams:連接兩個(gè)保持她們類(lèi)型的數(shù)據(jù)流。coMap漂洋、coFlatMap
ConnectedStreams --> DataStream:作用于connected數(shù)據(jù)流上遥皂,功能與map和flatMap一樣。split
DataStream --> SplitStream:根據(jù)某些特征把一個(gè)DataStream拆分成兩個(gè)或多個(gè)DataStreamselect
SplitStream --> DataStream:從一個(gè)SplitStream中獲取一個(gè)或多個(gè)DataStreamiterate
DataStream --> IterativeStream --> DataStream:在流程中創(chuàng)建一個(gè)反饋循環(huán)刽漂,將一個(gè)操作的輸出重定向到之前的操作演训,這對(duì)于定義持續(xù)更新模型的算法來(lái)說(shuō)很有意義的。extract timestamps
DataStream --> DataStream:提取記錄中的時(shí)間戳來(lái)跟需要事件時(shí)間的window一起發(fā)揮作用贝咙。
assignTimestamps