1、Spark Streaming简介
Spark Streaming是核心Spark API的扩展,可实现可扩展、高吞吐量、可容错的实时数据流处理。数据可以从诸如Kafka,Flume,Kinesis或TCP套接字等众多来源获取,并且可以使用由高级函数(如map,reduce,join和window)开发的复杂算法进行流数据处理。最后,处理后的数据可以被推送到文件系统,数据库和实时仪表板。而且,您还可以在数据流上应用Spark提供的机器学习和图处理算法。
2、Spark Streaming的特点
3、Spark Streaming的内部结构
在内部,它的工作原理如下。Spark Streaming接收实时输入数据流,并将数据切分成批,然后由Spark引擎对其进行处理,最后生成“批”形式的结果流。
Spark Streaming将连续的数据流抽象为discretizedstream或DStream。在内部,DStream 由一个RDD序列表示。
4、第一个小案例:NetworkWordCount
确保你的服务器上有netcat
yum install -y nc
启动7788端口 :nc -lk 7788
package day07 import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.streaming.{Milliseconds, StreamingContext} import org.apache.spark.{SparkConf, SparkContext} /** * @author Dawn * @version 1.0, 2019年6月24日22:10:22 * sparkStreaming-wordcount * * rdd:创建的程序入口 sparkContext * dataFrame:创建的程序入口 sparkSession * */ object WordCount { def main(args: Array[String]): Unit = { //1.创建sparkContext val conf:SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[2]") val sc:SparkContext=new SparkContext(conf) //2.创建StreamingContext val ssc: StreamingContext = new StreamingContext(sc,Milliseconds(2000)) //3.可以创建Dstream,首先接入数据源 //socket val datas: ReceiverInputDStream[String] = ssc.socketTextStream("hadoop01",7788) //4.进行计算,创建Dstream hello hunter hello reba val rd: DStream[(String, Int)] = datas.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_) //5.打印结果 rd.print() //6.注意:需要启动sparkstreaming程序 exit quit ssc.start() ssc.awaitTermination() } }