2017-04-05 21 views
6

私は数百個のgzipテキストファイルを数百個のフォルダにそれぞれs3で持ち、それを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) 

私はDROPMALFORMEDmodeを設定し、sc.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 とこのプレゼンテーションでは、Xiao Liによって火花を寄贈された: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –

関連する問題