2017-04-05 20 views
6

Mam kilkaset folderów z kilkoma tysiącami spakowanych plików tekstowych w s3 i próbuję je odczytać w ramce danych z spark.read.csv().Spark - jak pominąć lub zignorować puste pliki gzip podczas czytania

Wśród plików, istnieją pewne z zerowej długości, w wyniku błędu:

java.io.EOFException: Unexpected end of input stream

Kod:

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

Próbowałem ustawienie mode do DROPMALFORMED i czytanie z sc.textFile() ale brak szczęścia.

Jaki jest najlepszy sposób obsługi pustych lub uszkodzonych plików gzip?

Odpowiedz

3

Począwszy od Spark 2.1 można zignorować uszkodzone pliki, włączając opcję spark.sql.files.ignoreCorruptFiles. Dodaj to do swojej komendy spark-submit lub pyspark:

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

+0

Gdzie ta dokumentacja jest udokumentowana? Nie znalazłem tego w https://spark.apache.org/docs/latest/configuration.html – leon

+0

Nie jest to oficjalna dokumentacja, ale jest zawarte w bilecie Jira: https://issues.apache.org/jira/browse/SPARK-19082 i cytowany przez dostawcę iskrzy Xiao Li w tej prezentacji: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –

Powiązane problemy