首页 > 其他 > 详细

spark复习笔记(7):sparkstreaming

时间:2018-11-06 19:02:57      阅读:117      评论:0      收藏:0      [点我收藏+]

一、介绍

  1.sparkStreaming是核心模块Spark API的扩展,具有可伸缩,高吞吐量以及容错的实时数据流处理等。数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字)中获取。并且可以使用以高级函数表示的复杂算法进行处理map,例如reducejoinwindow。最后,处理后的数据可以推送到文件系统,数据库和实时仪表盘。

技术分享图片

 

  2.在内部,它的工作原理如下。Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理,以批量生成最终结果流。

技术分享图片

  3.sparkStreaming提供了一个高级的抽象discretized stream称之为DStream,表示连续的数据流。DStream可以通过像Kafka,Flume和Kinesis等源的输入数据流创建。或者通过应用在其他DStream上应用高级的操作得来。在内部DStream也表现为RDD序列。

  4.在我们详细介绍如何编写自己的Spark Streaming程序之前,让我们快速了解一下简单的Spark Streaming程序是什么样的。假设我们想要计算从TCP套接字上侦听的数据服务器接收的文本数据中的字数。您需要做的就是如下。

二、体验spark Streaming

  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

spark复习笔记(7):sparkstreaming

原文:https://www.cnblogs.com/bigdata-stone/p/9916866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!