Spark Streaming

Spark Streaming

  • [Spark Streaming](#Spark Streaming)
    • 一、应用场景
    • 二、核心机制
    • [三、Spark Streaming的程序执行入口](#三、Spark Streaming的程序执行入口)
      • [3.1 StreamingContext](#3.1 StreamingContext)
      • [3.2 StreamingContext的使用步骤](#3.2 StreamingContext的使用步骤)
        • [3.2.1 创建程序执行入口](#3.2.1 创建程序执行入口)
        • [3.2.2 根据数据源创建数据抽象DStream](#3.2.2 根据数据源创建数据抽象DStream)
        • [3.2.3 调用DStream的算子进行数据计算](#3.2.3 调用DStream的算子进行数据计算)
        • [3.2.4 调用StreamingContext的start方法启动实时计算](#3.2.4 调用StreamingContext的start方法启动实时计算)
        • [3.2.5 调用StreamingContext的awaitxxxx等待实时计算运行](#3.2.5 调用StreamingContext的awaitxxxx等待实时计算运行)
    • 四、DStream的创建
      • [4.1 从网络端口创建DStream](#4.1 从网络端口创建DStream)
      • [4.2 从外部文件中创建DStream](#4.2 从外部文件中创建DStream)
      • [4.3 Flume/Kafka](#4.3 Flume/Kafka)
    • 五、DStream的算子操作
      • [5.1 DStream是由时间批次组成RDD的集合](#5.1 DStream是由时间批次组成RDD的集合)
      • [5.2 无状态算子](#5.2 无状态算子)
      • [5.3 有状态算子](#5.3 有状态算子)
      • [5.4 窗口算子](#5.4 窗口算子)
    • 六、DStream的输出操作
      • [6.1 print操作](#6.1 print操作)
      • [6.2 saveAsTextFile/ObjectFile](#6.2 saveAsTextFile/ObjectFile)
      • [6.3 foreachRDD操作](#6.3 foreachRDD操作)
    • [七、Spark Streaming的WAL预写日志](#七、Spark Streaming的WAL预写日志)
      • [7.1 如何开启WAL预写日志](#7.1 如何开启WAL预写日志)
        • [7.1.1 设置ssc的检查点目录](#7.1.1 设置ssc的检查点目录)
        • [7.1.2 给SparkConf中增加一个配置项](#7.1.2 给SparkConf中增加一个配置项)

Spark Streaming

一、应用场景

实时计算的,一般使用在实时性要求比较高的场合。但是Spark Streaming内部采用批次计算的机制实现实时计算,一般情况下Spark Streaming也称之为准实时计算框架,批处理框架。

二、核心机制

核心采用了一个新的数据抽象DStream,DStream是多个RDD的集成体,DStream中采用时间批次的概念,将一段时间之间的数据封装为一个RDD,然后统一处理一次

三、Spark Streaming的程序执行入口

3.1 StreamingContext

3.2 StreamingContext的使用步骤

3.2.1 创建程序执行入口
3.2.2 根据数据源创建数据抽象DStream
3.2.3 调用DStream的算子进行数据计算
3.2.4 调用StreamingContext的start方法启动实时计算
3.2.5 调用StreamingContext的awaitxxxx等待实时计算运行

程序资源的问题,一般情况下,SparkStreaming的运行资源线程数一般大于等于2,receiver接收器接受数据源的数据封装称为batch批次数据时,batch数据可以自己设置存储位置,默认在内存和硬盘序列化存储2份

四、DStream的创建

4.1 从网络端口创建DStream

4.2 从外部文件中创建DStream

从外部文件中创建DStream(可以是本地文件系统的,也可以是HDFS文件系统):textFileStream fileStream 文件读取机制采用的是MapReduce中InputFormat机制来读取的

4.1~4.2:基础数据源

4.3 Flume/Kafka

高级数据源

五、DStream的算子操作

5.1 DStream是由时间批次组成RDD的集合

5.2 无状态算子

算子只对当前批次的数据有效,前一个批次的计算结果不清楚

  1. RDD中涉及的算子DStream基本都有,这些算子基本上都是无状态算子
  2. transform 算子直接对DStream中的RDD进行运算的

5.3 有状态算子

算子会记录前一个批次的计算结果,然后在和当前批次进行计算updateStateByKey

使用前提必须开启检查点目录

5.4 窗口算子

将n个批次的数据划分称为一个窗口。然后对窗口统一的运算

window 两个核心参数:

  1. windowDuration:窗口的宽度(包含多少个批次的数据)
  2. slideDuration:窗口的间隔(从前一个窗口的第批次条数据到第二个窗口的第一批次数据的间隔)

六、DStream的输出操作

6.1 print操作

6.2 saveAsTextFile/ObjectFile

6.3 foreachRDD操作

可以实现Spark Streaming和Spark的其他组件的无缝衔接

七、Spark Streaming的WAL预写日志

Spark Streaming运行的时候需要一个Receiver接收器接受数据,接受的数据设置缓存的地方,Receiver接受的数据一旦丢失,就算Spark有容错机制,无法计算了,因为没有数据源的数据了。

为了保证数据的安全性,防止了Receiver接受的数据丢失,可以开启Spark Streaming的预写日志WAL,WAL可以实现将Receiver每一批次的数据缓存到Spark的检查点目录。 因为一旦开启了WAL,程序的执行效率会非常的低

7.1 如何开启WAL预写日志

7.1.1 设置ssc的检查点目录
7.1.2 给SparkConf中增加一个配置项

spark.streaming.receiver.writeAheadLog.enable = true

相关推荐
深蓝电商API1 天前
分布式事务在跨境交易中的解决方案
分布式·跨境电商·代购系统·反向海淘·代购平台·跨境代购
藦卡机器人1 天前
中国工业机器人发展现状
大数据·人工智能·机器人
Simon_lca1 天前
突破合规瓶颈:ZDHC Supplier to Zero(工厂零排放 - 进阶型)体系全攻略
大数据·网络·人工智能·分类·数据挖掘·数据分析·零售
黄焖鸡能干四碗1 天前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
云境筑桃源哇1 天前
马踏春风 为爱启航 | 瑞派宠物医院(南部新城旗舰店)盛大开业!打造宠物医疗新标杆!
大数据·宠物
我真会写代码1 天前
从入门到精通:Kafka核心原理与实战避坑指南
分布式·缓存·kafka
xixixi777771 天前
2026 年 03 月 20 日 AI+通信+安全行业日报(来更新啦)
大数据·人工智能·安全·ai·大模型·通信
F36_9_1 天前
大数据治理平台选型避坑:2026 年 8 大主流系统实测
大数据·数据治理
成长之路5141 天前
【实证分析】A股上市公司企业劳动力需求数据集(2000-2023年)
大数据
奔跑的呱呱牛1 天前
GeoJSON 在大数据场景下为什么不够用?替代方案分析
java·大数据·servlet·gis·geojson