Yige

Yige

Build

Flink基礎-DataStream程式設計

流處理 API 演變(對比 Storm)#

  • Storm 的 API 抽象層次更低點,相當於是面向操作的,通過代碼直接自己自定義構造 DAG
TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("spout", new RandomSentenceSpout(), 5);
builder.setBolt("split", new SplitSentence(), 8).shuffleGrouping("spout");
builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word"));
  • Flink 相當於是面向數據的,通過 API,也就是一系列算子對數據進行一系列轉換計算,由 Flink 底層自己構建生成 DAG,所以相對來說抽象層次更高點

基本使用#

//1、設置運行環境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//2、配置數據源讀取數據
DataStream text = env.readTextFile ("input");
//3、進行一系列轉換
DataStream<Tuple2<String, Integer>> counts = text.flatMap(new Tokenizer()).keyBy(0).sum(1);
//4、配置數據匯寫出數據
counts.writeAsText("output");
//5、提交執行
env.execute("Streaming WordCount");

操作概覽#

image.png

DataStream 基本轉換#

image.png

物理分組方法#

只有進行分組後才能調用reduce/sum等算子進行統計計算

類型描述
keyBy()最常用的按 key 類型發送,key 的類型數量往往遠大於算子並發實例數
global()全部發往第一個 task
broadcast()廣播,適用於數量小的情況
forward()上下游並發度一致時一對一發送
shuffle()隨機均勻分配
rebalance()Round-Robin (輪流分配)
rescale()Local Round-Robin (本地輪流分配)
partitionCustomer()自定義單播 ()
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。