Spark Streaming和Flink的Word Count對比
準備:
nccat for windows/linux 都可以 通過 TCP 套接字連線,從流資料中建立了一個 Spark DStream/ Flink DataSream, 然後進行處理,
時間視窗大小為10s
因為 示例需要, 所以 需要下載一個netcat, 來構造流的輸入。
程式碼:
spark streaming
package cn.kee.spark; public final class JavaNetworkWordCount { private static final Pattern SPACE = Pattern.compile(" "); public static void main(String[] args) throws Exception { if (args.length < 2) { System.err.println("Usage: JavaNetworkWordCount <hostname> <port>"); System.exit(1); } StreamingExamples.setStreamingLogLevels(); SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount"); JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); JavaReceiverInputDStream<String> lines = ssc.socketTextStream( args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER); JavaDStream<String> words = lines.flatMap(new FlatMapFunction<String, String>() { @Override public Iterator<String> call(String x) { return Arrays.asList(SPACE.split(x)).iterator(); } }); JavaPairDStream<String, Integer> wordCounts = words.mapToPair( new PairFunction<String, String, Integer>() { @Override public Tuple2<String, Integer> call(String s) { return new Tuple2<>(s, 1); } }).reduceByKey(new Function2<Integer, Integer, Integer>() { @Override public Integer call(Integer i1, Integer i2) { return i1 + i2; } }); wordCounts.print(); ssc.start(); ssc.awaitTermination(); } }
Flink DataSream
package cn.kee.flink; import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.common.functions.ReduceFunction; import org.apache.flink.api.java.utils.ParameterTool; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.windowing.time.Time; import org.apache.flink.util.Collector; /** * Example :SocketWindowWordCount * @author keehang * */ public class SocketWindowWordCount { public static void main(String[] args) throws Exception { // the port to connect to final int port = 9999; /*try { final ParameterTool params = ParameterTool.fromArgs(args); port = params.getInt("port"); } catch (Exception e) { System.err.println("No port specified. Please run 'SocketWindowWordCount --port <port>'"); return; }*/ // get the execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // get input data by connecting to the socket DataStream<String> text = env.socketTextStream("localhost", port, "\n"); // parse the data, group it, window it, and aggregate the counts DataStream<WordWithCount> windowCounts = text .flatMap(new FlatMapFunction<String, WordWithCount>() { @Override public void flatMap(String value, Collector<WordWithCount> out) { for (String word : value.split("\\s")) { out.collect(new WordWithCount(word, 1L)); } } }) .keyBy("word") .timeWindow(Time.seconds(5), Time.seconds(1)) .reduce(new ReduceFunction<WordWithCount>() { @Override public WordWithCount reduce(WordWithCount a, WordWithCount b) { return new WordWithCount(a.word, a.count + b.count); } }); // print the results with a single thread, rather than in parallel windowCounts.print().setParallelism(1); env.execute("Socket Window WordCount"); } }
結果:
Spark是一種快速、通用的計算集群系統,Spark提出的最主要抽象概念是彈性分散式資料集(RDD),它是一個元素集合,劃分到叢集的各個節點上,可以被並行操作。使用者也可以讓Spark保留一個RDD在記憶體中,使其能在並行操作中被有效的重複使用。
Flink是可擴充套件的批處理和流式資料處理的資料處理平臺,設計思想主要來源於Hadoop、MPP資料庫、流式計算系統等,支援增量迭代計算。
總結:Spark和Flink全部都執行在Hadoop
YARN上,效能為Flink > Spark > Hadoop(MR),迭代次數越多越明顯,效能上,Flink優於Spark和Hadoop最主要的原因是Flink支援增量迭代,具有對迭代自動優化的功能
流式計算比較
它們都支援流式計算,Flink是一行一行處理,而Spark是基於資料片集合(RDD)進行小批量處理,所以Spark在流式處理方面,不可避免增加一些延時。Flink的流式計算跟Storm效能差不多,支援毫秒級計算,而Spark則只能支援秒級計算。
SQL支援
都支援,Spark對SQL的支援比Flink支援的範圍要大一些,另外Spark支援對SQL的優化,而Flink支援主要是對API級的優化。
Spark 感覺2.x 後主要在spark sql 這裡發展優勢,快速Join操作,以及繼續擴充套件sql支援。至於Flink,其對於流式計算和迭代計算支援力度將會更加增強。
相關推薦
Spark Streaming和Flink的Word Count對比
準備: nccat for windows/linux 都可以 通過 TCP 套接字連線,從流資料中建立了一個 Spark DStream/ Flink DataSream, 然後進行處理, 時間視窗大小為10s 因為 示例需要, 所以 需要下載一個netcat, 來構造
【轉】Spark Streaming和Kafka整合開發指南
thread ada 關系 方法 拷貝 理解 1.2 reduce arr 基於Receivers的方法 這個方法使用了Receivers來接收數據。Receivers的實現使用到Kafka高層次的消費者API。對於所有的Receivers,接收到的數據將會保存在Spark
spark配置和word-count
pack lib tuple www. sch creat java clust name Spark ------------ 快如閃電集群計算引擎。 應用於大規模數據處理快速通用引擎。 內存計算。 [Speed] 計
Spark2.2(三十三):Spark Streaming和Spark Structured Streaming更新broadcast總結
背景: 需要在spark2.2.0更新broadcast中的內容,網上也搜尋了不少文章,都在講解spark streaming中如何更新,但沒有spark structured streaming更新broadcast的用法,於是就這幾天進行了反覆測試。經過了一下兩個測試::Spark Streaming更
Spark Streaming 和 Flink 誰是資料開發者的最愛
本文從程式設計模型、任務排程、時間機制、Kafka 動態分割槽的感知、容錯及處理語義、背壓等幾個方面對比 Spark Streaming 與 Flink,希望對有實時處理需求業務的企業端使用者在框架選型有所啟發。 程式設計模型對比 執行角色 Spark Streaming 執行時的角色(
Spark Streaming和Storm架構比對
Spark Streaming類似於Apache Storm,用於流式資料的處理。根據其官方文件介紹,Spark Streaming有高吞吐量和容錯能力強等特點。Spark Streaming支援的資料輸入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和簡單的TCP套接字等等
Spark Streaming和Storm的區別和聯絡
Spark Streaming和Storm區別和聯絡 Spark Streaming和Storm都是將流資料分成一個個小塊的批資料(batch)。 處理模型、延遲 Strom:處理的是每次傳入的事件。秒內延遲。(最小100ms) Spark Stre
Spark Streaming 和kafka 整合指導(kafka 0.8.2.1 或以上版本)
本節介紹一下如何配置Spark Streaming 來接收kafka的資料。有兩個方法: 1、老的方法 -使用Receivers 和kafka的高階API 2、新的方法( Spark 1.3 開始引入)-不適用Receivers。這兩個方式擁有不同的程式設計模型,效能特徵
Spark Streaming與Storm的對比分析
一、Spark Streaming與Storm的對比 二、Spark Streaming與Storm的優劣分析 事實上,Spark Streaming絕對談不上比Storm優秀。這兩個框架在實時計算領域中,都很優秀,只是擅長的細分場景並不相同。 Spark S
Structure Streaming和spark streaming原生API訪問HDFS檔案資料對比
此文已由作者嶽猛授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 Structure Stream訪問方式 code examples import org.apache.spark.sql.streaming._ val df = spark.
Dataflow編程模型和spark streaming結合
而且 拆分 元組tuple ica 目前 維度 前景 fix 好的 Dataflow編程模型和spark streaming結合 主要介紹一下Dataflow編程模型的基本思想,後面再簡單比較一下Spark streaming的編程模型 == 是什麽 ==
Spark的Streaming和Spark的SQL簡單入門學習
gen 官方文檔 文檔 zed pairs running eas SM from 1、Spark Streaming是什麽? a、Spark Streaming是什麽? Spark Streaming類似於Apache Storm,用於流式數據的處理。根據其官方文
提高MSSQL數據庫性能(1)對比count(*) 和 替代count(*)
profile 感謝 ccache blog 猜想 .html itl arc .cn 原文:提高MSSQL數據庫性能(1)對比count(*) 和 替代count(*)文章準備的數據庫: Atricles 表 數據量60690000條數據 ArticleID 主鍵自
flink和spark stream等框架的對比
如果 ilo orm 任務 執行 自己實現 原因 lin lov 參考這篇文章: https://www.sohu.com/a/196257023_470008 我們當時的目標就是要設計一款低延遲、exactly once、流和批統一的,能夠支撐足夠大體量的復雜計算的引
Apache 流框架 Flink,Spark Streaming,Storm對比分析(2)
此文已由作者嶽猛授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 2.Spark Streaming架構及特性分析 2.1 基本架構 基於是spark core的spark streaming架構。 Spark Streaming是將流式計算分解成一系列短小的批處理作業。這裡的批處
Spark Streaming整合flume(Poll方式和Push方式)
flume作為日誌實時採集的框架,可以與SparkStreaming實時處理框架進行對接,flume實時產生資料,sparkStreaming做實時處理。 Spark Streaming對接FlumeNG有兩種方式,一種是FlumeNG將訊息Push推給Spark Streaming,還
Spark Streaming狀態管理函式(一)——updateStateByKey和mapWithState
updateStateByKey和mapWithState 什麼是狀態管理函式 updateStateByKey mapWithState updateStateByKey和mapWithState的區別 適用場景 什麼是狀態管理函
Spark Streaming實時流處理筆記(6)—— Kafka 和 Flume的整合
1 整體架構 2 Flume 配置 https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html 啟動kafka kafka-server-start.sh $KAFKA_HOME/config/se
Apache 流框架 Flink,Spark Streaming,Storm對比分析(二)
本文由 網易雲 釋出2.Spark Streaming架構及特性分析2.1 基本架構基於是spark core的spark streaming架構。Spark Streaming是將流式計算分解成一系列短小的批處理作業。這裡的批處理引擎是Spark,也就是把Spark Str
Spark Streaming 輸入DStream和Receiver詳解
輸入DStream和Receiver詳解 輸入DStream代表了來自資料來源的輸入資料流。在之前的wordcount例子中,lines就是一個輸入DStream(JavaReceiverInputDStream),代表了從netcat(nc)服務接收到的資