• spark学习笔记(十一)——sparkStreaming-概述/特点/构架/DStream入门程序wordcount


    目录

    SparkStreaming

    sparkStreaming

    DStream

    sparkStreaming特点

    sparkStreaming构架

    背压机制

    DStream入门


    SparkStreaming

    sparkStreaming

    Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多:Kafka、Flume、Twitter、ZeroMQ 和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语:map、reduce、join、window等进行运算。而结果也能保存在:HDFS,数据库等。

    DStream

    DStream是随时间推移而收到的数据的序列,Spark Streaming使用离散化流作为抽象表示,在内部每个时间区间收到的数据都作为RDD存在,而DStream是由这些RDD所组成的序列,因此得名“离散化”,简单来将DStream就是对RDD在实时数据处理场景的一种封装。

    sparkStreaming特点

    易用

    Spark Streaming支持Java、Python、Scala等编程语言,可以像编写离线程序一样编写实时计算的程序求照的器。

    容错

    Spark Streaming在没有额外代码和配置的情况下,可以恢复丢失的数据。实时计算的容错性至关重要。

    RDD容错机制:每一个RDD都是个不可变的分布式可重算数据集,它记录着确定性的操作继承关系,只要输入数据是可容错的,任意一个RDD的分区出错或不可用都可以使用原始输入数据经过转换操作重新计算得到。

    易整合到Spark体系

    Spark Streaming可以在Spark上运行,允许重复使用相同的代码进行批处理,实时处理可以与离线处理相结合实现交互式的查询操作。

    sparkStreaming构架

    SparkStreaming整体构架图

    sparkStreaming构架图

    背压机制

    spark1.5版本开始Spark Streaming可以动态控制数据接收速率来适配集群数据处理能力。

    背压机制(Spark Streaming Backpressure): 根据JobScheduler反馈作业的执行信息来动态调整Receiver数据接收率。

    通过属性“spark.streaming.backpressure.enabled”控制是否启用backpressure机制,默认值false不启用。

    DStream入门

    DStream是Spark Streaming的基础抽象,代表持续性的数据流和经过各种Spark语操作后的结果数据流。DStream是一系列连续的RDD。每个RDD含有一段时间间隔内的数据。

     sparkStreaming实现wordcount程序!

    代码

    1. import org.apache.spark.SparkConf
    2. import org.apache.spark.streaming.{Seconds, StreamingContext}
    3. object WordCount {
    4. def main(args: Array[String]): Unit = {
    5. //配置spark
    6. val sparkConf = new SparkConf().setMaster("local[*]").setAppName("StreamWordCount")
    7. //初始化streamingContext,间隔时间为5秒
    8. val ssc = new StreamingContext(sparkConf, Seconds(5))
    9. //通过监控端口创建Dstream,读取数据(行),主机名、端口号
    10. val line = ssc.socketTextStream("hadoop01", 9999)
    11. //切分数据
    12. val word = line.flatMap(_.split(" "))
    13. //映射(word,1)
    14. val word2 = word.map((_, 1))
    15. //统计
    16. val wordcount = word2.reduceByKey(_ + _)
    17. //打印
    18. wordcount.print()
    19. //启动sparkStreamingCount
    20. ssc.start()
    21. ssc.awaitTermination()
    22. }
    23. }

    结果:

    启动netcat作为数据源,端口号为9999,输入数据

     启动程序查看输出结果

    本文仅仅是学习笔记!!!!

  • 相关阅读:
    【mysql篇】操作数据库的日期、字符串、数值、流程控制函数
    002从零开始入门Entity Framework Core——DbContext生存期、配置和初始化
    计算机视觉——基本矩阵的计算
    C++——模板初阶
    模拟退火算法
    笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?
    图像处理02 matlab中NSCT的使用
    最小栈 与 栈的压入、弹出序列
    成熟ICT测试系统与LabVIEW定制开发的比较
    webssh —— 浏览器上的终端
  • 原文地址:https://blog.csdn.net/qq_55906442/article/details/126292487