首页 > 解决方案 > Spark 2.3.1 结构化流状态存储内部工作

问题描述

我一直在阅读有关结构化流的 spark 2.3.1 文档,但找不到有关状态操作如何在状态存储内部工作的详细信息。更具体地说,我想知道的是,(1)国家商店是否已分发?(2)如果是这样,那么每个工人或核心如何?

似乎在以前版本的 Spark 中它是每个工人,但现在不知道。我知道它是由 HDFS 支持的,但没有任何解释内存存储的实际工作原理。

确实是分布式内存存储吗?我对重复数据删除特别感兴趣,如果数据是来自一个大数据集的流,那么这需要进行计划,因为所有“不同”数据集最终将保存在内存中,作为该数据集处理的结束. 因此,需要根据状态存储的工作方式来计划工作人员或主人的规模。

标签: apache-sparkspark-structured-streaming

解决方案


结构化流中只有一种状态存储实现,它由内存中的 HashMap 和 HDFS 支持。In-Memory HashMap 用于数据存储,HDFS 用于容错。HashMap在worker上占用executor内存,每个HashMap代表一个聚合分区的版本化key-value数据(经过去重、groupByy等聚合算子生成)

但这并不能解释 HDFSBackedStateStore 是如何实际工作的。我在文档中没有看到

您是正确的,没有可用的此类文档。我必须理解代码 (2.3.1),写了一篇关于 State Store 如何在 Structured Streaming 内部工作的文章。您可能想看看:https ://www.linkedin.com/pulse/state-management-spark-structured-streaming-chandan-prakash/


推荐阅读