拼花模式管理

时间:2018-10-19 13:30:50

标签: hadoop version-control bigdata parquet data-migration

我最近开始研究一个新项目,我们在其中使用Spark来以Parquet格式写入/读取数据。该项目正在快速变化,我们确实需要定期更改镶木地板文件的架构。我目前正在努力对数据和代码进行版本控制。我们对代码库使用版本控制系统,但是很难(对于我而言)至少对数据本身做到这一点。我也有迁移脚本,该脚本用于将数据从旧模式迁移到新模式,但是在运行迁移过程中,我会松散有关镶木地板文件的模式的信息。同样,了解原始架构是我的首要任务。

所以我的问题是

  • 如何跟踪HDFS中架构不一致的镶木地板文件?我有几个TB的镶木地板文件。
  • 运行迁移脚本以将当前架构(原始)转换为新架构后,如何跟踪原始架构?
  • 有没有现成的工具可以实现这一目标,或者我必须自己编写一些东西?

非常感谢。

1 个答案:

答案 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")

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