Parquet模式管理

njthzxwz  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(392)

我最近开始从事一个新项目,在这个项目中,我们使用spark以Parquet格式写/读数据。该项目正在迅速变化,在这里和那里,我们确实需要改变Parquet文件定期模式。我目前正在努力进行数据和代码的版本控制。
我们对代码库使用版本控制系统,但对数据本身使用版本控制系统非常困难(至少在我看来是这样)。我还有迁移脚本,我使用它将数据从旧模式迁移到新模式,但是在运行迁移之前,我丢失了关于parquet文件的模式的信息。我的首要任务是了解原始模式。
所以我的问题是
如何跟踪HDF中存在架构不一致的Parquet文件?我有好几兆字节的Parquet文件。
运行迁移脚本将当前模式(原始模式)转换为新模式后,如何跟踪原始模式?
是否有任何现有的工具来实现这一点,或者我必须写我自己的东西?

yptwkmov

yptwkmov1#

您可以使用delta-lake,它具有覆盖模式和维护以前版本的数据的功能
delta-lake基本上是一堆带有delta日志(commit log)的Parquet文件

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

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

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

上面是delta lake overwrite它去检查delta日志,并将delta lake中的新数据版本改写为带有时间戳的版本1(如果以前的数据是版本0),我们还可以在delta lake中进行时间旅行(读取以前的数据版本)

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

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

相关问题