spark wholeTextFiles对大数据失败

时间:2015-12-30 09:13:47

标签: apache-spark pyspark

我使用pyspark 1.5.0版和Cloudera 5.5.0。除非我使用sc.wholeTextFiles,否则所有脚本都运行正常。使用此命令会出错:

Kryo Serialization failed: Buffer overflow. Available:0, required: 23205706. To avoid this, increase spark.kryoserializer.buffer.max

但是,我在spark web UI中找不到属性spark.kryoserializer.buffer.max;它不存在于Spark Web UI的Environment选项卡下。此页面中唯一的“kryo”是名称org.apache.spark.selializer.KryoSerializer的值spark.serializer

为什么我看不到这个属性?以及如何解决问题?

修改

原来 Kryo错误 打印到shell 引起。没有打印,错误实际上是java.io.IOExceptionL Filesystem closed! 该脚本现在可以正常处理一小部分数据,但在所有数据(约500GB10,000 files)上运行它会返回此错误。

我试图传递属性--conf "spak.yarn.executor.memoryOverhead=2000",似乎它允许读取稍大一部分数据,但它仍然最终在完整数据上失败。在出现错误之前需要10-15分钟的运行时间。

RDD很大,但即使仅对其进行.count()也会产生错误。

1 个答案:

答案 0 :(得分:0)

您应该在提交工作时传递此类财产。这就是为什么它不在Cloudera UI中。 http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_running_spark_apps.html

在您的情况下:--conf "spark.kryoserializer.buffer.max = 64M"(例如)

另外,我不确定但是如果你增加Kryo缓冲区可能会增加akka帧大小。