1.sparkStreaming是核心模块Spark API的扩展,具有可伸缩,高吞吐量以及容错的实时数据流处理等。数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字)中获取。并且可以使用以高级函数表示的复杂算法进行处理map
,例如reduce
,join
和window
。最后,处理后的数据可以推送到文件系统,数据库和实时仪表盘。
2.在内部,它的工作原理如下。Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理,以批量生成最终结果流。
3.sparkStreaming提供了一个高级的抽象discretized stream称之为DStream,表示连续的数据流。DStream可以通过像Kafka,Flume和Kinesis等源的输入数据流创建。或者通过应用在其他DStream上应用高级的操作得来。在内部DStream也表现为RDD序列。
4.在我们详细介绍如何编写自己的Spark Streaming程序之前,让我们快速了解一下简单的Spark Streaming程序是什么样的。假设我们想要计算从TCP套接字上侦听的数据服务器接收的文本数据中的字数。您需要做的就是如下。
1.pom.xml文件
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.1.0</version> </dependency>
2.编写程序
package com.jd.spark.scala import org.apache.spark._ import org.apache.spark.streaming._ import org.apache.spark.streaming.StreamingContext._ object SparkStreamingDemo { def main(args: Array[String]): Unit = { //这个地方要注意,并发线程数要大于1,创建一个配置对象,将其设置为本地模式, val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount"); //创建sparkStreaming上下文,批次时长是1s val ssc = new StreamingContext(conf,Seconds(1)); //创建套接字文本流 val lines = ssc.socketTextStream("localhost",9999); //将读取进来的行进行压扁操作,这个地方返回的都是离散流DStream val words = lines.flatMap(_.split(" ")) //变换成对偶 val pairs = words.map((_,1)); //聚合操作 val count = pairs.reduceByKey(_ +_); count.print(); //开始进行相关的计算,等待其停止 ssc.start(); //等待结束 ssc.awaitTermination() } }
3.启动nc服务器
4.导出stream程序的jar文件,丢到centos上去运行
(1)
(2)
(3)spark-submit --class com.jd.spark.scala.SparkStreamingDemo SparkDemo1-1.0-SNAPSHOT.jar
原文:https://www.cnblogs.com/bigdata-stone/p/9916866.html