gpt4 book ai didi

caching - 在Spark Streaming中,我们可以将数据(hashmap)存储在Executor内存中吗

转载 作者:行者123 更新时间:2023-12-01 13:42:13 24 4
gpt4 key购买 nike

我想在 Spark Executors 内存(长期缓存)中维护一个缓存 (HashMap),以便在执行器上运行的所有任务(在不同时间)都可以在那里进行查找,并且还能够更新缓存。

这在 Spark 流中可能吗?

最佳答案

我不确定是否有办法将自定义数据结构永久存储在执行程序上。我在这里的建议是使用一些外部缓存系统(例如 Redis、Memcached,在某些情况下甚至是 ZooKeeper)。您可以在处理 RDD/DataFrame 时使用 foreachPartitionmapPartitions 等方法进一步连接到该系统,以将连接数减少到每个分区 1 个连接。

之所以可行,是因为 Redis 和 Memcached 都是内存存储,因此不会有将数据溢出到磁盘的开销。

另外两种在执行器之间分配状态的方法是累加器和广播变量。对于累加器,所有执行者都可以写入,但读取只能由驱动程序执行。对于广播变量,您只需在驱动程序上写入一次,然后将其作为只读数据结构分发给执行程序。这两种情况都不适合您,因此所描述的解决方案是我在这里看到的唯一可能的方法。

关于caching - 在Spark Streaming中,我们可以将数据(hashmap)存储在Executor内存中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083028/

24 4 0