在pyspark中使用大对象

时间:2017-01-08 19:23:34

标签: apache-spark pyspark

我对pyspark中的内存管理有疑问。

我有一个大的只读字典,应该可以由MapReduce中的每个映射器查询。这个全局对象非常大,不适合每个映射器的内存。

实施此用例的最佳做法是什么?到目前为止,我的尝试失败了。

非常感谢,

伊多。

1 个答案:

答案 0 :(得分:0)

取决于对象的大小。

  • 如果它比内存大得多,最好使用RDD / DataFrame并加入。
  • 如果它相当小,您可以将其写入文件(例如使用shelve)并分发文件。 Spark具有SparkFiles机制,可用于此。

我必须承认你评论的这一部分:

  

事实是每个映射器需要在每次迭代中扫描整个字典RDD,

麻烦我。在这种情况下,我的第一个建议是搜索更好的算法。