2017-04-05 21 views
6

Tôi có một vài trăm thư mục với hàng nghìn tệp văn bản được nén trong s3 và tôi đang cố đọc chúng vào một khung dữ liệu với spark.read.csv().Spark - cách bỏ qua hoặc bỏ qua các tệp gzip trống khi đọc

Trong số các tập tin, có một số với số không dài, dẫn đến lỗi:

java.io.EOFException: Unexpected end of input stream

Code:

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

Tôi đã thử đặt mode-DROPMALFORMED và đọc với sc.textFile() nhưng không may mắn.

Cách tốt nhất để xử lý tệp gzip trống hoặc bị hỏng là gì?

Trả lời

3

Bắt đầu từ Spark 2.1, bạn có thể bỏ qua các tệp bị hỏng bằng cách bật tùy chọn spark.sql.files.ignoreCorruptFiles. Thêm mục này vào lệnh spark-submit hoặc pyspark của bạn:

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

+0

Cấu hình này được ghi lại ở đâu? Tôi không tìm thấy nó trong https://spark.apache.org/docs/latest/configuration.html – leon

+0

Nó không có trong tài liệu chính thức nhưng nó được bao gồm trong một vé Jira: https://issues.apache.org/jira/duyệt/SPARK-19082 và được trích dẫn bởi người đóng góp tia lửa Xiao Li trong bản trình bày này: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –

Các vấn đề liên quan