赞
踩
Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。
数据来源:Kafka,Flume,Kinesis或TCP套接字等,
可以使用高级函数进行复杂算法进行处理map
,例如reduce
,join
和window
。
处理后的数据可以推送到文件系统,数据库等
它的工作原理:
Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理以批量生成最终结果流
Spark Streaming提供称为离散流或DStream的高级抽象,表示连续的数据流。DStream可以从来自Kafka,Flume和Kinesis等源的输入数据流创建,也可以通过在其他DStream上应用高级操作来创建。在内部,DStream表示为一系列 RDD。
- import org.apache.spark.SparkConf
- import org.apache.spark.streaming.{Seconds, StreamingContext}
-
- object StreamDemo {
- def main(args: Array[String]): Unit = {
- val conf = new SparkConf().setMaster("local[2]").setAppName("MyTest")
- val ssc = new StreamingContext(conf,Seconds(1))
- //创建一个DStream来表示来自TCP源的流数据,指定为主机名(例如localhost)和端口(例如9999)。
- //此linesDStream表示将从数据服务器接收的数据流。DStream中的每条记录都是一行文本
- val lines = ssc.socketTextStream("localhost",9999)
- //flatMap是一对多DStream操作,它通过从源DStream中的每个记录生成多个新记录来创建新的DStream。在这种情况下,每行将被分成多个单词,单词流表示为wordsDStream。
- val words = lines.flatMap(_.split(" "))
- val pairs = words.map(word => (word,1))
- val wordCount = pairs.reduceByKey(_+_)
- wordCount.print()
- //Spark Streaming仅设置启动时将执行的计算,并且尚未启动实际处理。要在设置完所有转换后开始处理
- ssc.start()
- ssc.awaitTermination()
- }
- }
使用端口发送数据:
nc -lk 9999
查看端口使用情况:
lsof -i:9999
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。