我最近开始从事一个新项目,在这个项目中,我们使用spark以Parquet格式写/读数据。该项目正在迅速变化,在这里和那里,我们确实需要改变Parquet文件定期模式。我目前正在努力进行数据和代码的版本控制。
我们对代码库使用版本控制系统,但对数据本身使用版本控制系统非常困难(至少在我看来是这样)。我还有迁移脚本,我使用它将数据从旧模式迁移到新模式,但是在运行迁移之前,我丢失了关于parquet文件的模式的信息。我的首要任务是了解原始模式。
所以我的问题是
如何跟踪HDF中存在架构不一致的Parquet文件?我有好几兆字节的Parquet文件。
运行迁移脚本将当前模式(原始模式)转换为新模式后,如何跟踪原始模式?
是否有任何现有的工具来实现这一点,或者我必须写我自己的东西?
1条答案
按热度按时间yptwkmov1#
您可以使用delta-lake,它具有覆盖模式和维护以前版本的数据的功能
delta-lake基本上是一堆带有delta日志(commit log)的Parquet文件
上面的代码片段覆盖了普通的parquet文件,这意味着之前的数据将被覆盖
上面是delta lake overwrite它去检查delta日志,并将delta lake中的新数据版本改写为带有时间戳的版本1(如果以前的数据是版本0),我们还可以在delta lake中进行时间旅行(读取以前的数据版本)
此代码可用于读取第0个版本的数据