Spark实时(一):StructuredStreaming 介绍
文章目录
2、SparkStreaming处理实时数据只支持Processing Time
三、StructuredStreaming 特点
Structured Streaming 介绍
一、SparkStreaming实时数据处理痛点
在Spark2.0之前版本中处理流式数据时使用SparkStreaming模块,SparkStreaming模块有一些痛点问题,问题如下:
1、复杂的编程模式
SparkStreaming编写代码是基于DStream进行,DStream底层是RDD操作,编程时需要编写很多DStream API非常不方便。由于不同开发者编码水平不同,导致不同人编写相同业务逻辑程序执行效率也有很大不同。并且在SparkStreaming中编程时需要创建StreamingContext对象,如果想要使用SQL方式对实时数据进行处理,那么还需要创建SparkSession对象,编程方式非常不方便。
2、SparkStreaming处理实时数据只支持Processing Time
在流式数据处理场景中,实时事件产生时会对应一个时间,这个时间一般包含在事件信息中,这个时间我们一般称为“Event Time”(事件时间),实时事件产生后通过网络传输被实时处理框架处理时间我们称为“Processing Time”(处理时间)。由于实时事件通过网络传递时会出现延迟现象,所以计算框架在对数据进行窗口划分时最好使用“Event Time”进行窗口划分,这样数据统计更精准,而SparkStreaming中仅支持“Processing Time”。
3、微批处理,延迟高
SparkStreaming仅支持微批处理数据,很难做到毫秒级数据延迟,延迟高。
4、精准消费一次问题
SparkStreaming中要想实现精准消费一次数据需要自己代码实现,比较麻烦。
二、StructuredStreaming概述
Spark2.0版本之后引入StructuredStreaming,StructuredStreaming提供快速、可扩展、容错、端到端exactly-once流处理,Structured Streaming 是基于SparkSQL引擎构建的可扩展且容错的流处理引擎,可以使用SparkSQL方式像处理批数据一样处理实时数据,可以随着实时数据产生持续不断的增量处理数据并且更新最终结果。StructStreaming的出现解决了SparkStreaming流处理的很多痛点。
在内部,默认情况下,Structured Streaming查询使用微批处理引擎,该引擎将数据流处理成一系列小批量作业,从而实现低至100ms的端到端数据延迟和“exactly-once”容错保证。但是在Spark2.3版本之后,Structured Streaming引入了“Continuous Processing”连续处理,可以实现在“at-lest-once”至少一次保证的情况下实现低至1ms的端到端数据延迟,在代码编程层面,我们不需要修改对应的Dataset和DataFrame代码,只需要选择对应的模式即可使用Continuous Processing。
SparkStreaming与Structured Streaming相比较,SparkStreaming是Spark最初的流处理框架,只能使用DStream算子编程,底层是RDD操作,而Structured Streaming是Spark2.0后退出的流式处理框架,处理支持Spark,底层操作是基于DataFrame/Dataset,目前也支持连续流处理模型,但是目前在实验阶段。
三、StructuredStreaming 特点
- 可以基于Scala/Java/Python语言进行编程。
- 可以使用Dataset/DataFrame方式开发流式作业,性能相对于RDD编程高。
- 通过Checkpoint和WAL预写日志机制自动实现端到端exactly-once数据仅一次消费语义。
- Structured Streaming底层模式是微批处理模式,在Spark2.3后支持连续实时数据处理。
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
原文地址:https://blog.csdn.net/xiaoweite1/article/details/140648388
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!