Parquet模式管理

3

我最近开始参与一个新项目,我们使用Spark来读写Parquet格式的数据。该项目正在快速变化,我们需要经常更改Parquet文件的模式。我目前在处理数据和代码版本控制的问题。

我们为代码库使用版本控制系统,但我认为对于数据本身来说这很难做到。我也有迁移脚本,用于将数据从旧模式迁移到新模式,但在此过程中,我会失去有关运行迁移之前Parquet文件模式的信息。知道原始模式是我的首要任务。

因此,我的问题如下:

  • 您如何跟踪HDFS中存在模式不一致的Parquet文件?我有几TB的Parquet文件。
  • 在运行迁移脚本将当前模式(原始模式)转换为新模式后,您如何跟踪原始模式?
  • 是否有任何现有工具可以实现这一点,还是我必须自己编写?
1个回答

2
您可以使用Delta Lake,它具有覆盖模式和维护先前数据版本的功能。
Delta Lake基本上是一堆带有delta日志(提交日志)的Parquet文件。
data.write.format("parquet").mode("overwrite").save("/tmp/delta-table")

上述代码片段会覆盖普通的Parquet文件,这意味着以前的数据将被覆盖。
data.write.format("delta").mode("overwrite").save("/tmp/delta-table")

以上是Delta Lake覆盖它,请检查Delta日志并将新版本的数据覆盖到Delta Lake中作为版本1,并附带时间戳(如果先前的数据是版本0)。我们还可以在Delta Lake中进行时间旅行(读取以前的数据版本)。
df = spark.read.format("delta").option("versionAsOf", 0).load("/tmp/delta-table")

这段代码可以用来读取数据的零版。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接