2015-10-04 24 views
13

Quando un file Parquet data è scritto con il partizionamento sulla sua colonna date otteniamo una struttura di directory simile:I file dei metadati del parquet devono essere riavvolti?

/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 

Se la partizione date=2 viene eliminato senza il coinvolgimento di utilità Parquet (tramite la shell o browser di file, ecc) è necessario eseguire il rollback di uno qualsiasi dei file di metadati quando era presente solo la partizione date=1?

Oppure è corretto eliminare le partizioni a piacere e riscriverle (o meno) in seguito?

risposta

4

Se stai usando dataframe non v'è alcuna necessità di Roll Back i file di metadati.

Ad esempio:

scrivi tu dataframe a S3

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

Poi, manualmente eliminare una delle partizioni (data = cartella 1 Nella S3) utilizzando il browser S3 (ad es CloudBerry)

Ora è possibile

  • carico i vostri dati e vedere che i dati sono ancora valida tranne i dati che avevi in ​​data partizione = 1 sqlContext.read.parquet("s3n://bucket/folderPath").count

  • O riscrittura tua dataframe (o qualsiasi altro dataframe con lo stesso schema) utilizzando accodare modalità

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

Si può anche dare un'occhiata a questo question da databricks per um.

Problemi correlati