1、flink的四大基石
state、Time、window、checkpoint
2、flink中的滾動窗口和滑動窗口的區別
滾動窗口:窗口長度=滑動距離,又分為滾動時間窗口、滾動計數窗口。
滑動窗口:窗口長度!=滑動距離,其中,如果滑動距離>窗口長度,會漏掉數據,反之則會重複處理數據比如要求是每隔1分鐘,統計前面5分鐘的數據(滑動距離1分鐘,窗口長度5分鐘,重複處理4分鐘的數據)
3、flink中時間語義有哪些?如何處理遲到的數據
時間語義:
eventTime:事件時間,是時間真正發生時的時間
ingestionTime:攝入時間,是時間達到流處理系統的時間
ProcessingTime:處理時間,是時間被處理的時間
遲到的數據可以使用:
allowdelateness:水印+allowdelateness是短期延遲+等待長期延遲效果,達到水印條件後,會觸發窗口計算,但是不關閉窗口。事件時間延遲達到水印+allowdelateness之後會關閉窗口
側輸出-SideOutput:通過watermark在短時間內允許了亂序到來的數據,可以將錯過水印有錯過allowdelateness允許的時間的數據,單獨存放在一個DataStream中,然後開發人員可以自定義邏輯對這些超級遲到的數據進行處理。
4、flinkCore中都能讀取哪些數據
基本數據類型
// 從集合讀取基本類型
Integer
Double
String
Boolean
Long序列
複合數據類型
Tuple(元組)、
POJO(普通Java對象)、
Case Class(Scala專用,Java中類似POJO)
數據庫數據
Kafka消息隊列數據
日誌數據
訂單數據
5、flink中常見的算子以及作用
1)Source:用來處理數據來源
fromSource、readFile、collection、Socket其中socket是非並行的Source,該方法需要傳入兩個參數,一個是指定的ip或主機名,另一個是端口號
2)Transformaton-轉換算子:
FlatMap:讀取文件內容,
Filter:讀取文件中的日誌數據,並過濾出對應的ip,
KeyBy:分組,
Reduce:對一個dataset或group進行聚合計算,最終聚合成一個元素
union:可以合併多個同類型的流,可以去並集但是不會去重,且union合併的Datastream的類型必須是一致的。
collect:可以連接兩個不同類型的流,兩個流之間的數據類型可以不同,對兩個流的數據可以分別應對不同的處理邏輯。
Side Outputs側道輸出(側輸出流):可以分流,例如將數據按照奇偶數進行分流,並獲取數據。
3)Sink:調用Sink後才會產生最終的計算結果
print:打印,可以傳入一個字符,指定一個Sink的標識名稱,如果有多個打印的Sink,用來區分到底是哪一個Sink的輸出。
Connectors:向JDBC數據庫中寫入數據,包括kafkaconnector,jdbcconnector。
6、窗口函數分為增量函數和全量函數,請編寫對應的函數名
增量函數:reduce(reduceFunction)、aggregate(aggregateFunction)、sum()、min()、max()
全量函數:apply(windowFunction)、process(processWindowFunction)
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。