BAR*_*BAR 13 apache-spark parquet spark-streaming
当Parquet文件data在其date列上写入分区时,我们得到一个目录结构,如:
/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
Run Code Online (Sandbox Code Playgroud)
如果在date=2没有Parquet实用程序(通过shell或文件浏览器等)的情况下删除分区,那么当只有分区时,是否需要回滚任何元数据文件date=1?
或者可以随意删除分区并在以后重写它们(或不重写)?
如果您使用DataFrame,则无需回滚元数据文件。
例如:
您可以将 DataFrame 写入 S3
df.write.partitionBy("date").parquet("s3n://bucket/folderPath")
Run Code Online (Sandbox Code Playgroud)
然后,使用 S3 浏览器(例如 CloudBerry)手动删除您的分区之一(S3 中的 date=1 文件夹)
现在你可以
加载数据并查看数据仍然有效,除了分区 date=1 中的数据之外 sqlContext.read.parquet("s3n://bucket/folderPath").count
或者使用追加模式 重写您的 DataFrame(或具有相同架构的任何其他 DataFrame)
df2.write.mode("append").partitionBy("date").parquet("s3n://bucket/folderPath")
Run Code Online (Sandbox Code Playgroud)您还可以从 databricks 论坛查看这个问题。
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |