我使用帶有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