Spark 2.3.1结构化流状态存储内部工作

时间:2018-08-17 10:29:00

标签: apache-spark spark-structured-streaming

我一直在浏览关于结构化流的spark 2.3.1的文档,但是找不到有关状态存储在状态存储内部如何工作的详细信息。更具体地说,我想知道的是:(1)状态存储区是分布式的吗? (2)如果是,那么每个工人或每个核心如何?

在旧版本的spark中,似乎是每个工作人员使用的,但现在还不知道。我知道它得到了HDFS的支持,但是没有任何东西可以解释内存中存储的实际工作方式。

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

有人有一些信息,指针或建议如何处理吗?

谢谢, Maatari

1 个答案:

答案 0 :(得分:0)

结构化流中只有一种状态存储实现,它由内存中的HashMap和HDFS支持。 内存中的HashMap用于数据存储,而HDFS用于故障角色。 HashMap在工作程序上占用执行程序内存,每个HashMap代表聚合分区的版本化键值数据(在聚合操作符如重复数据删除,groupByy等之后生成)

  

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

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