Python 并行化阶段的火花存储器错误

Python 并行化阶段的火花存储器错误,python,docker,apache-spark,pyspark,out-of-memory,Python,Docker,Apache Spark,Pyspark,Out Of Memory,我们正在使用最新的Spark版本。我们有一个非常大的元组列表(8亿个)作为输入。我们使用带有主节点和多个工作节点的docker容器运行Pyspark程序。驱动程序用于运行程序并连接到主机 运行程序时,在sc.parallelize(tuplelist)行,程序要么退出并显示java堆错误消息,要么退出而不显示任何错误。我们不使用任何Hadoop HDFS层,也不使用纱线 到目前为止,我们已经考虑了这些so公告中提到的可能因素: (samthebest列出的可能解决方案也无助于解决问题) 在

我们正在使用最新的Spark版本。我们有一个非常大的元组列表(8亿个)作为输入。我们使用带有主节点和多个工作节点的docker容器运行Pyspark程序。驱动程序用于运行程序并连接到主机

运行程序时,在sc.parallelize(tuplelist)行,程序要么退出并显示java堆错误消息,要么退出而不显示任何错误。我们不使用任何Hadoop HDFS层,也不使用纱线

到目前为止,我们已经考虑了这些so公告中提到的可能因素:

  • (samthebest列出的可能解决方案也无助于解决问题)
在这一点上,我们有以下问题:

  • 我们如何知道sc.parallelize步骤应该使用多少个分区?这里有什么好的经验法则
  • 您是否知道任何(常见的)错误可能导致观察到的错误
Ans:有多个因素决定分区的数量

1) 在某些情况下,分区数是内核数的3-4倍是很好的(考虑到每个分区的处理时间都将超过几秒)

2) 分区不能太小或太大(128MB或256MB)就足够了

Do you know any (common?) mistake which may lead to the observed behevior?
你能检查一下执行器内存和磁盘的大小吗


如果您可以指定有关作业的更多详细信息,例如核心数量、执行器内存、执行器数量和可用磁盘,则指出问题将很有帮助。

I个人可以将scala与spark一起使用,但是我参加了一个dataworks会议,他们在会上谈到pyspark的主要问题是,如果我没记错的话,python内存存在于java堆中,当您使用python时,您应该注意内存消耗并正确设置配置。我不确定,但对我来说,错误似乎不是由于分区数量或诸如此类的原因造成的,但错误源在您使用的配置中。我们使用以下配置运行spark作业:/spark/bin/spark submit--masterspark://spark-master:7077 --驱动程序内存5g--执行器内存7g--py文件路径/to/file.py 2 20 0.5“/data/40k_test.csv”因此驱动程序内存为5GB,执行程序内存为7GB。工人在Docker-compose.yml中有2个CPU和2GB的内存保留和内存限制。感谢您的帮助!我看不到内存分配有任何问题,可能看了代码,什么类型的机器(standard-2或standard-4…)与yaml文件一起使用可能会更好地了解这个问题。
Do you know any (common?) mistake which may lead to the observed behevior?