【发布时间】:2019-07-15 11:27:31
【问题描述】:
我们使用的是最新的 Spark 版本。我们有一个非常大的元组列表(800 Mio.)作为输入。我们使用具有主节点和多个工作节点的 docker 容器运行 Pyspark 程序。驱动程序用于运行程序并连接到主机。
运行程序时,在 sc.parallelize(tuplelist) 行,程序要么退出并显示 java 堆错误消息,要么完全退出而没有任何错误。我们不使用任何 Hadoop HDFS 层,也没有 YARN。
到目前为止,我们已经考虑了这些 SO 帖子中提到的可能因素:
- Spark java.lang.OutOfMemoryError : Java Heap space
- Spark java.lang.OutOfMemoryError: Java heap space(samthebest 提供的可能解决方案列表也无助于解决问题)
此时我们有以下问题:
- 我们如何知道我们应该为 sc.parallelize 步骤使用多少个分区?这里有什么好的经验法则?
- 您是否知道任何(常见的?)错误可能导致观察到的行为?
【问题讨论】:
-
我个人将 scala 与 spark 一起使用,但我参加了一个数据工作会议,他们谈到 pyspark 的主要问题是如果我没记错的话,python 内存存在于 java 堆中,并且当你使用python 你应该知道你的内存消耗并正确设置配置。我不确定,但对我来说,错误似乎与分区数量或类似的东西无关,但错误源在您使用的配置中。
标签: python docker apache-spark pyspark out-of-memory