SparkStreaming的不足
- 基于微批处理,延迟高不能做到真正的实时计算
- DStream基于RDD,不直接支持SQL
- 流批处理的API应用层不统一
- 流用的是DSteam,底层是RDD
- 批用的是DataFram、DataSet、RDD
- 不支持EventTime(事件时间)
- EventTime:事件真正发生的时间
- PorcessTime处理时间:事件被流系统处理的时间
- IngestionTime摄入事件:事件到达流系统的时间
列举不适用的场景
- 如一条错误日志10月1日 23:59:00秒产生的(事件时间)因为网路延迟到10月2日 00:00:10到达日志处理系统(摄入时间)10月2日00:00:20被流系统处理(处理时间)
- 如果要统计10月1日的系统bug数量,那么SparkStreaming是不能正确统计的,因为它不支持事件事件
- 数据的Exactly-Once(恰好一次语义)需要手动实现
解释:数据的一次性语义
分类:最多一次、恰好一次(SparkStreaming要实现,需要手动维护偏移量)、最少一次
StructedStreaming介绍
概念
它是基于Spark SQL引擎的可扩展、容错的全新流处理引擎,解决 SparkStreaming的不足。
特点
- 实现了真正的流处理,延迟低
- 数据类型基于DataFream/DataSet,支持SQL
- 统一了流批处理的高性能API
- 支持EventTime(事件时间)
基本数据类型
StructedStreaming是一个无界表/动态表格,底层基于DataFrame/DataSet