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?