[英]spark wholeTextFiles fails for large data
我将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”是值为spark.serializer
的值org.apache.spark.selializer.KryoSerializer
。
为什么我看不到此属性? 以及如何解决该问题?
编辑
原来Kryo错误是由对shell的打印引起的 。 如果不打印,则错误实际上是java.io.IOExceptionL Filesystem closed
! 现在,脚本可以对一小部分数据正确运行,但是在所有数据(大约500GB
, 10,000 files
)上运行该脚本将返回此错误。
我试图传递--conf "spak.yarn.executor.memoryOverhead=2000"
,似乎它允许读取稍大部分的数据,但最终仍会在完整数据上失败。 出现错误需要10到15分钟的运行时间。
RDD很大,但是即使仅对其执行.count()
也会产生错误。
提交工作时,您应该通过此类财产。 这就是为什么它不在Cloudera UI中。 http://www.cloudera.com/content/www/zh-cn/documentation/enterprise/latest/topics/cdh_ig_running_spark_apps.html
在您的情况下:-- --conf "spark.kryoserializer.buffer.max = 64M"
(例如)
另外,我不确定,但是可能会发生,如果您增加Kryo缓冲区,则可能要增加akka帧大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.