我在火花流方面有这个错误,我需要存储一个全局变量(如计数器),以便在各种执行器中使用,这个变量只会在驱动程序中增加。不能使用火花累加器,因为每个执行器都有本地上下文。我也尝试过使用火花缓存,但它只允许存储整个数据集,而不仅仅是一个整数变量。BlockManager可能是一个很好的解决方案,但是从spark提供的文档来看,很难理解任何东西。我希望你能帮我找到解决办法。
注:我用火花和python
发布于 2018-07-22 15:52:06
Spark提供了一个叫做广播变量的东西来保存高速缓存数据。广播变量是只读缓存,每个执行者都在其中保存自己的副本。因此,对它的任何更新对其他执行者都是不可见的。另外,请注意,广播对象不是可序列化的,必须是最终对象。所以,我们不能更新它。
保存缓存数据的一些简单的选项:
我尝试并为我设计的一种方法是周期性地重新广播缓存数据。请查看我在如何使用流应用程序编制周期性更改的缓存数据。上的博客,了解更多的细节,我给出了一个演示来处理这个问题。希望它能给你一个关于如何在火花中使用变化的缓存数据的视角。
https://stackoverflow.com/questions/49151668
复制相似问题