sqlcontext spark read apache-spark spark-streaming parquet

apache spark - spark - ¿Deben retrotraerse los archivos de metadatos de parquet?



spark sql (1)

Si está utilizando DataFrame, no hay necesidad de deshacer los archivos de metadatos.

Por ejemplo:

Puede escribir su DataFrame en S3

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

Luego, borre manualmente una de sus particiones (fecha = 1 carpeta en S3) usando el navegador S3 (por ejemplo, CloudBerry)

Ahora usted puede

  • Cargue sus datos y vea que los datos siguen siendo válidos, excepto los datos que tenía en la fecha de partición = 1 sqlContext.read.parquet("s3n://bucket/folderPath").count

  • O reescriba su DataFrame (o cualquier otro DataFrame con el mismo esquema) usando el modo de adición

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

También puedes echarle un vistazo a esta pregunta en el foro de databricks.

Cuando los data un archivo Parquet se escriben con particiones en su columna de date , obtenemos una estructura de directorios como:

/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

Si la date=2 partición date=2 se elimina sin la participación de las utilidades de Parquet (a través del shell o del explorador de archivos, etc.), ¿se debe revertir a alguno de los archivos de metadatos cuando solo había la date=1 partición date=1 ?

¿O está bien eliminar particiones a voluntad y reescribirlas (o no) más tarde?