【Spark编程基础】第7章 Structured Streaming

系列文章目录



前言


第7章 Structured Streaming

7.1 概述

7.1.1 基本概念

  • Structured Streaming的关键思想是将实时数据流视为一张正在不断添加数据的表
  • 可以把流计算等同于在一个静态表上的批处理查询,Spark会在不断添加数据的无界输入表上运行计算,并进行增量查询
    在这里插入图片描述
  • 在无界表上对输入的查询将生成结果表,系统每隔一定的周期会触发对无界表的计算并更新结果表
    在这里插入图片描述

7.1.2 两种处理模型

(1)微批处理

  • Structured Streaming默认使用微批处理执行模型,这意味着Spark流计算引擎会定期检查流数据源,并对自上一批次结束后到达的新数据执行批量查询
  • 数据到达和得到处理并输出结果之间的延时超过100毫秒
    在这里插入图片描述

(2)持续处理

  • Spark从2.3.0版本开始引入了持续处理的试验性功能,可以实现流计算的毫秒级延迟
  • 在持续处理模式下,Spark不再根据触发器来周期性启动任务,而是启动一系列的连续读取、处理和写入结果的长时间运行的任务
    在这里插入图片描述

7.1.3 Structured Streaming 和 Spark SQL、Spark Streaming 关系

  • Structured Streaming处理的数据跟Spark Streaming一样,也是源源不断的数据流,区别在于,Spark Streaming采用的数据抽象是DStream(本质上就是一系列RDD),而Structured Streaming采用的数据抽象是DataFrame。
  • Structured Streaming可以使用Spark SQL的DataFrame/Dataset来处理数据流。虽然Spark SQL也是采用DataFrame作为数据抽象,但是,Spark SQL只能处理静态的数据,而Structured Streaming可以处理结构化的数据流。这样,Structured Streaming就将Spark SQL和Spark Streaming二者的特性结合了起来。
  • Structured Streaming可以对DataFrame/Dataset应用前面章节提到的各种操作,包括select、where、groupBy、map、filter、flatMap等。
  • Spark Streaming只能实现秒级的实时响应,而Structured Streaming由于采用了全新的设计方式,采用微批处理模型时可以实现100毫秒级别的实时响应,采用持续处理模型时可以支持毫秒级的实时响应。

7.2 编写Structured Streaming程序的基本步骤

  • 编写Structured Streaming程序的基本步骤包括:
    • 导入pyspark模块
    • 创建SparkSession对象
    • 创建输入数据源
    • 定义流计算过程
    • 启动流计算并输出结果
  • 实例任务:
    • 一个包含很多行英文语句的数据流源源不断到达,
    • Structured Streaming程序对每行英文语句进行拆分,并统计每个单词出现的频率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值