2017-04-05 99 views
6

我有幾百個文件夾,每個文件夾都有數千個gzip文件,我試圖用spark.read.csv()將它們讀入數據框。Spark - 如何在讀取時跳過或忽略空的gzip文件

在這些文件中,有一些與長度爲零,導致錯誤:

java.io.EOFException: Unexpected end of input stream

代碼:

df = spark.read.csv('s3n://my-bucket/folder*/logfiles*.log.gz',sep='\t',schema=schema) 

我已經嘗試設置modeDROPMALFORMEDsc.textFile()但閱讀沒有運氣。

處理空的或損壞的gzip文件的最佳方法是什麼?

回答

3

從Spark 2.1開始,您可以通過啓用spark.sql.files.ignoreCorruptFiles選項來忽略損壞的文件。將此添加到您的spark-submit或pyspark命令中:

--conf spark.sql.files.ignoreCorruptFiles=true

+0

此配置在何處記錄?我在https://spark.apache.org/docs/latest/configuration.html中找不到它 – leon

+0

它不在官方文檔中,但它包含在Jira票證中:https://issues.apache.org/jira /瀏覽/ SPARK-19082 並由火花貢獻者小李在本演示中引用: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –

相關問題