Spark Streaming - 1

发布于:2023-01-04 ⋅ 阅读:(234) ⋅ 点赞:(0)

1.Spark Streaming 概述

在这里插入图片描述

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

在这里插入图片描述
和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽
象表示,叫作 DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收
到的数据都作为 RDD 存在,而 DStream 是由这些 RDD 所组成的序列(因此得名“离散化”)。所以
简单来将,DStream 就是对 RDD 在实时数据处理场景的一种封装。

2.Spark Streaming 特点

  • 易用
  • 容错
  • 易整合到Spark体系

3.Spark Streaming 架构

在这里插入图片描述

在这里插入图片描述

3.Word Count

<dependency>
	 <groupId>org.apache.spark</groupId>
	 <artifactId>spark-streaming_2.12</artifactId>
	 <version>3.0.0</version>
</dependency>

scala

object Spark01 {
  // 准实时, 微批次
  // DStream 实际上是对RDD 的封装
  // 背压机制: 如果生成数据过快, 消费数据过慢, 数据会挤压
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Streaming")
    val ssc = new StreamingContext(sparkConf, Seconds(3))

    ssc.socketTextStream("localhost", 9999).flatMap(_.split(" "))
        .map((_, 1))
        .reduceByKey(_+_)
        .print()

    ssc.start()
    ssc.awaitTermination()
  }

}

在这里插入图片描述
对数据的操作也是按照 RDD 为单位来进行的

在这里插入图片描述
计算过程由 Spark Engine 来完成

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到