我最近开始研究一个新项目,我们在其中使用Spark来以Parquet格式写入/读取数据。该项目正在快速变化,我们确实需要定期更改镶木地板文件的架构。我目前正在努力对数据和代码进行版本控制。我们对代码库使用版本控制系统,但是很难(对于我而言)至少对数据本身做到这一点。我也有迁移脚本,该脚本用于将数据从旧模式迁移到新模式,但是在运行迁移过程中,我会松散有关镶木地板文件的模式的信息。同样,了解原始架构是我的首要任务。
所以我的问题是
非常感谢。
答案 0 :(得分:1)
您可以使用delta lake ,它具有覆盖架构和维护先前版本的功能 数据版本
三角洲湖泊基本上是一堆带有三角洲日志(提交日志)的镶木地板文件
data.write.format("parquet").mode("overwrite").save("/tmp/delta-table")
上面的代码片段覆盖了普通的镶木地板文件,这意味着先前的数据将被覆盖
data.write.format("delta").mode("overwrite").save("/tmp/delta-table")
上面是delta lake覆盖它,请检查delta日志并用时间戳记将delta lake中的新数据版本覆盖为版本1(如果以前的数据为版本0) 我们还可以在三角洲湖中旅行(读取以前的数据)
df = spark.read.format("delta").option("versionAsOf", 0).load("/tmp/delta-table")
此代码可用于读取数据的第零版本