我使用带有Cloudera 5.5.0的pyspark 1.5.0版。所有脚本运行良好,除非我使用sc.wholeTextFiles
。使用这个命令给出了一个错误:spark整个文件文件对于大数据失败
Kryo Serialization failed: Buffer overflow. Available:0, required: 23205706. To avoid this, increase spark.kryoserializer.buffer.max
不过,我不觉得火花网络用户界面特性spark.kryoserializer.buffer.max
;它不在Spark Web UI中的Environment
选项卡下。此页面中唯一的“kryo”是名称spark.serializer
的值org.apache.spark.selializer.KryoSerializer
。
为什么我看不到这个属性?以及如何解决这个问题?
EDIT
原来,KRYO错误是引起印刷到外壳。没有打印,错误实际上是java.io.IOExceptionL Filesystem closed
! 该脚本现在对一小部分数据正常工作,但在所有数据上运行该脚本(大约500GB
,10,000 files
)都会返回此错误。
我试图传入--conf "spak.yarn.executor.memoryOverhead=2000"
,它似乎允许读取一小部分数据,但它最终仍会在完整数据上失败。在出现错误之前需要运行10-15分钟。
RDD很大,但即使只在其上执行.count()
,也会产生错误。
没有什么区别,运行以下命令:'spark-submit --master yarn-client --num-executors 6 --conf“spark.kryoserializer.buffer.max = 128M”/ dev/myScript.py'。仍然'Kryo序列化失败:缓冲区溢出。可用性:0,要求:23205706'。 – Keldeo
它可能很小'm',但我不是这样的... 您想要读取的文件有多大?那里有多少?您正在创建一个带有此功能的PairRDD,也许它只有几GB? – szefuf
谢谢。不知何故,通过调用整个文本文件的take(1),对shell进行大量打印是导致kryo错误的原因。没有它,错误是不同的,我编辑相应。 – Keldeo