2015-12-30 32 views
0

我使用帶有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(),也會產生錯誤。

回答

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緩衝您可能需要增加阿卡幀大小。

+0

沒有什麼區別,運行以下命令:'spark-submit --master yarn-client --num-executors 6 --conf「spark.kryoserializer.buffer.max = 128M」/ dev/myScript.py'。仍然'Kryo序列化失敗:緩衝區溢出。可用性:0,要求:23205706'。 – Keldeo

+0

它可能很小'm',但我不是這樣的... 您想要讀取的文件有多大?那裏有多少?您正在創建一個帶有此功能的PairRDD,也許它只有幾GB? – szefuf

+0

謝謝。不知何故,通過調用整個文本文件的take(1),對shell進行大量打印是導致kryo錯誤的原因。沒有它,錯誤是不同的,我編輯相應。 – Keldeo