一、基本概念
1.1 兩種數(shù)據(jù)處理方式
批處理:MapReduce、Spark、Flink
流式處理:Storm、Spark、Flink
Spark和Flink都兼具批處理和流式處理,但原理不同。Spark認(rèn)為批處理是常態(tài),流式處理是一個(gè)特例,所以是微批micro batch。而Flink剛好相反,認(rèn)為流處理是常態(tài),批處理是流處理的一個(gè)特例,所以有window時(shí)間窗口的概念。

二、實(shí)例
2.1 腳本
from pyspark import SparkContext,SparkConf
from pyspark.streaming import StreamingContext
conf = SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
sc = SparkContext(conf=conf)
#We create a local StreamingContext with two execution threads, and batch interval of 1 second.
? ? ssc = StreamingContext(sc,3)
lines = ssc.socketTextStream("localhost",9999)
words = lines.flatMap(lambda x:x.split(" "))
pairs = words.map(lambda x:(x,1))
wordCounts = pairs.reduceByKey(lambda x,y:x+y)
wordCounts.pprint()
ssc.start()
ssc.awaitTermination()
2.2 cmd中輸入
nc -lk 9999
然后輸入一些字符,以空格隔開,換行表示輸入完成
2.3 運(yùn)行結(jié)果
-------------------------------------------
Time: 2020-06-28 19:47:15
-------------------------------------------
('b', 3)
('c', 2)
('a', 4)
('e', 2)
('d', 1)