【问题标题】:Do Parquet Metadata Files Need to be Rolled-back?Parquet 元数据文件是否需要回滚?
【发布时间】:2016-01-01 09:56:04
【问题描述】:

当 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

如果分区 date=2 在没有 Parquet 实用程序参与的情况下被删除(通过 shell 或文件浏览器等),是否需要回滚任何元数据文件到只有分区 date=1 时?

还是可以随意删除分区,以后再重写(或不重写)?

【问题讨论】:

    标签: apache-spark spark-streaming parquet


    【解决方案1】:

    如果您使用 DataFrame,则无需回滚元数据文件。

    例如:

    您可以将 DataFrame 写入 S3

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

    然后,使用 S3 浏览器(例如 CloudBerry)手动删除您的一个分区(S3 中的 date=1 文件夹)

    现在可以

    • 加载您的数据并查看数据是否仍然有效,除了您在 partition date=1 sqlContext.read.parquet("s3n://bucket/folderPath").count

      中的数据李>
    • 或使用追加模式重写您的DataFrame(或具有相同架构的任何其他DataFrame)

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

    您还可以查看来自 databricks 论坛的 question

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 2016-09-16
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多