2015-10-04 14 views
13

Khi một tập tin Parquet data được viết với phân vùng trên cột date của chúng tôi có được một cấu trúc thư mục như:Các tệp Siêu dữ liệu Parquet có cần được cuộn lại không?

/data 
    _common_metadata 
    _metadata 
    _SUCCESS 
    /date=1 
     part-r-xxx.gzip 
     part-r-xxx.gzip 
    /date=2 
     part-r-xxx.gzip 
     part-r-xxx.gzip 

Nếu phân vùng date=2 sẽ bị xóa mà không cần sự tham gia của các tiện ích Parquet (thông qua vỏ hoặc trình duyệt tập tin, vv) có bất kỳ tệp siêu dữ liệu nào cần được cuộn lại khi chỉ có phân vùng date=1 không?

Hoặc bạn có thể xóa phân vùng theo ý muốn và viết lại chúng (hay không) sau này?

Trả lời

4

Nếu bạn đang sử dụng DataFramekhông cần quay lại tệp siêu dữ liệu.

Ví dụ:

Bạn có thể viết DataFrame của bạn để S3

df.write.partitionBy("date").parquet("s3n://bucket/folderPath") 

Sau đó, tay xóa một trong những phân vùng của bạn (date = 1 thư mục trong S3) sử dụng trình duyệt S3 (ví dụ CloudBerry)

Bây giờ bạn có thể

  • tải dữ liệu của bạn và thấy rằng dữ liệu vẫn còn hợp lệ trừ các dữ liệu bạn đã có trong ngày phân vùng = 1 sqlContext.read.parquet("s3n://bucket/folderPath").count

  • Hoặc viết lại DataFrame của bạn (hoặc bất kỳ DataFrame khác với cùng một giản đồ) sử dụng append chế độ

    df2.write.mode("append").partitionBy("date").parquet("s3n://bucket/folderPath") 
    

Bạn cũng có thể có một cái nhìn tại question này từ databricks cho um.

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