【问题标题】:Parquet schema managementParquet 模式管理
【发布时间】:2019-03-24 09:45:27
【问题描述】:

我最近开始了一个新项目,我们使用 Spark 以 Parquet 格式写入/读取数据。该项目正在迅速变化,我们确实需要定期更改 parquet 文件的架构。我目前正在努力处理版本控制数据和代码。

我们对代码库使用版本控制系统,但很难(至少在我看来)为数据本身做这件事。我也有迁移脚本,我用它来将数据从旧模式迁移到新模式,但是在运行迁移之前,我丢失了关于 parquet 文件模式的信息。了解原始模式也是我的首要任务。

所以我的问题是

  • 如何跟踪 HDFS 中架构不一致的 parquet 文件?我有几 TB 的 parquet 文件。
  • 运行迁移脚本将当前架构(原始)转换为新架构后,您如何跟踪原始架构?
  • 是否有任何现有的工具可以实现这一点,或者我必须自己编写一些东西?

【问题讨论】:

    标签: hadoop version-control parquet data-migration


    【解决方案1】:

    您可以使用delta lake ,它具有覆盖架构和维护以前的功能 数据版本

    delta Lake 基本上是一堆带有 delta 日志(提交日志)的 parquet 文件

    data.write.format("parquet").mode("overwrite").save("/tmp/delta-table")
    

    上面的代码sn-p覆盖了普通的parquet文件,这意味着之前的数据将被覆盖

    data.write.format("delta").mode("overwrite").save("/tmp/delta-table")
    

    上面是delta湖覆盖它去检查delta日志并将delta湖中的新数据版本覆盖为带有时间戳的版本1(如果以前的数据是版本零) 我们还可以在三角湖中进行时间旅行(读取以前版本的数据)

    df = spark.read.format("delta").option("versionAsOf", 0).load("/tmp/delta-table")
    

    此代码可用于读取数据的第零版本

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2018-04-11
      相关资源
      最近更新 更多