flink原理和基本功能是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
具有時間邊界的數據集,處理過程中數據一定會在某個時間內開始和結束。
數據只有開始沒有邊界。
SQL API支持批和流的計算。
Table API將內存中的DataStream和DataSet數據集在原有的基礎上增加Schema信息,將數據類型統一抽象成表結構,然后通過Table API接口處理對應的數據集。
SQL API可以直接查詢Table API注冊表的數據。
Tabel API 提供大量接口如GroupByKey、Join等,并支持和DataStream和DataSet的相互轉換。
有編程經驗者使用,1.12版本開始DataStream處理流批數據,DataSet接口逐步廢除。
Flink最底層接口,靈活性非常強,可實現復雜的流式計算邏輯,使用成本較高,一般企業級用戶使用它進行二次開發或深度封裝。
設定運行環境,支持動態(本地和線上)啟動、本地啟動、遠程線上啟動三種。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //指定處理方式批處理、流處理、自適應 env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
指定數據源
DataSet<String> text = env.readTextFile("/path/to/file");
操作數據集
DataSet<Tuple2<String, Integer>> counts = text.flatMap(_.toLowerCase.split(" ")) //實行map轉換 .filter(_.nonEmpty) //過濾控制 .map((_,1)) //執行map轉換,轉換為key-value .keyBy(0) //按照指定第一個字段key進行分區, .sum(1); //分區后按第二個字段求和
指定結果輸出
counts.writeAsCsv(outputPath, "\n", " ");
指定名稱并觸發
env.execute("Streaming Count");
flink有豐富的數據類型支持,統一由TypeInformation定義。支持與java、scala任意數據類型轉換。
BasicTypeInfo類型支持任意java基礎類型和String類型。
TupleTypeInfo描述Tuple類型數據,2019年版本支持字段上線為25個。
CaseClassTypeInfo支持任意Scala Case class,包括Scala tuples,2019年支持最大字段數為22個。
PojoTypeInfo描述任意POJO類型,
POJO類必須是public修飾的非內部類。
POJO類必須含有默認空構造器
PoJO類所有字段必須是public,類型必須是flink支持的。
Value數據類型實現了org.apache.flink.types.Value,其中包含read()和write()兩種序列化和反序列化操作。目前內建類型有IntValue、DoubleValue、StringValue。
scala中的List、Map、Either、Option、Try,java中Either,hadoop中Writable。
Flink作為新一代計算引擎,在實時計算領域有著及其重要的地位,同時也有這復雜的概念,時間窗口、水位線等,學習并理解成本不低。
看完上述內容,你們掌握flink原理和基本功能是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。