Flink 入門(1)----DataSet API使用之單詞詞頻統計

Flink分別提供了面向流式處理的接口(DataStream API)和麪向批處理的接口(DataSet API,因此,Flink既可以完成流處理,也可以完成批處理。

每個Flink程序都包含以下的若干流程:

  • 獲得一個執行環境;(Execution Environment)

  • 加載/創建初始數據;(Source)

  • 指定轉換這些數據;(Transformation)

  • 指定放置計算結果的位置;(Sink)

  • 觸發程序執行

下面從學習Flink DataSet Java API的單詞詞頻統計代碼實例開始Flink的學習之旅。

public class BatchWordCountDemo {
    public static void main(String[] args) throws Exception {
        //1.獲取一個執行環境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        //2.讀取輸入數據
        DataSet<String> ds = env.fromElements("hello flink","hello spark");

        //3.單詞的詞頻統計
        DataSet<Tuple2<String, Integer>> sum = ds.flatMap(new LineSplitter())
                .groupBy(0)
                .sum(1);

        //4 打印結果
        sum.print();
    }

    public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String,Integer>>{
        @Override
        public void flatMap(String line, Collector<Tuple2<String, Integer>> out) throws Exception {
            for(String word:line.split(" ")){
                out.collect(new Tuple2<>(word,1));
            }
        }
    }
}

上面代碼實例中註釋1表示創建一個執行環境,表示當前執行程序的上下文。 如果程序是獨立調用的,則此方法返回本地執行環境;如果從命令行客戶端調用程序以提交到集羣,則此方法返回此集羣的執行環境,也就是說,getExecutionEnvironment會根據查詢運行的方式決定返回什麼樣的運行環境,是最常用的一種創建執行環境的方式。

打印結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章