大数据技术分享 Spark技术讲座 流中的漩涡 共14页.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
大数据技术正在快速发展,其中Apache Spark作为一个突出的开源大数据处理框架,已经成为了业界广泛使用的工具之一。特别是在流数据处理方面,Spark的Structured Streaming提供了相对成熟的解决方案。本次分享的内容主要围绕Structured Streaming的局限性、挑战以及可能的解决办法。 Structured Streaming支持将流数据与批数据进行连接操作,这在很多场景下是非常有用的功能。但问题在于Spark在处理这种连接时并不支持连接谓词的下推。这意味着在每个微批处理时,状态数据必须被加载到Spark的内存中。这样的处理方式在数据量大时会消耗大量的内存资源,影响系统的整体性能。 为了解决这一问题,文档中提到了几种方法,包括但不限于: 1. 缓存批数据数据框并重启流处理应用或查询。 2. 在Spark之外进行数据缓存。 3. 在map/flatmap操作中查找批数据。 4. 流更新和流之间的连接(2.3+版本支持,但仅限于有限的使用场景)。 此外,文档也提到了数据输出模式的选择,支持包括JSON、CSV、Parquet、Orc、Text以及JDBC在内的多种格式,这些输出模式分为批处理模式和流式模式两种。 在讨论输出模式时,提到了JDBC输出模式的具体实现和特性。这一实现允许将流式数据写入JDBC数据存储,并且使用与批处理JDBC输出相同的代码。它支持覆盖和追加两种模式,并且原生支持至少一次的发送,通过配置可以实现精确一次的发送保证。该实现的具体代码可以在GitHub上找到,包括源代码和测试用例。 文档中还提到,checkpoint是Structured Streaming中保存状态的机制,允许流处理应用程序在出现故障时从上次保存的状态继续恢复。为了保证状态的一致性和可恢复性,checkpoint应该存储在一个健壮的位置,并且能够被执行器和驱动程序读写。然而,Amazon S3并不保证即时一致性,这可能会导致checkpoint出现异常。因此,在Amazon Web Services(AWS)上使用时,推荐使用EFS来存储checkpoint。在Kubernetes环境下,需要配置一个支持读写扩展(RWX)访问模式的持久性卷(PV)。 对于checkpoint存在的问题,文档指出了相关的Apache JIRA问题编号SPARK-21696,并提到了解决方案是在出现异常的情况下每天删除一次checkpoint。当然,这样的操作意味着可能会丢失部分数据。幸运的是,该问题在Spark版本2.2.1中已经得到解决。 文档还提到了数据聚合方面的问题,所谓"Anthropophagic Aggregations"。文档中提到了结构化流在执行聚合操作时可能遇到的问题,并以一个带问号的语句提出了对聚合操作的质疑。 整个讲座内容深刻、实用,从问题解决的角度对Spark的Structured Streaming进行了深入探讨,为从业者提供了许多宝贵的实践经验和故障排除技巧。通过这次分享,可以对Spark的流处理技术有更为深入的理解,并在实际应用中遇到问题时能够有针对性地进行优化和解决。
- 粉丝: 456
- 资源: 7220
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助