我对数据砖上的Delta和lakehouse相当陌生。我有一些问题,基于以下行动:
- 我导入了一些镶木地板文件
- 将它们转换为delta(创建1个snappy.parquet文件(
- 删除一个随机行(创建一个新的snappy.parquet文件(
- 我检查了这两个快速文件(delta表的版本0和版本1(的内容,它们都包含所有数据,每一个都有特定的差异
这是否意味着delta只是为每个新版本复制数据?
这是如何扩展的?还是我错过了什么?
是的,这就是Delta lake的工作原理——当你修改数据时,它不会只写Delta,而是会获取受更改影响的原始文件,进行更改并将其写回。但请注意,并非所有数据都是重复的,只有文件中受影响行所在的数据才是重复的。例如,您有3个数据文件,并且正在对第二个文件中的一些行进行更改。在这种情况下,Delta将创建一个编号为4的新文件,其中包含必要的更改+文件2中的其余数据,因此您将拥有以下版本:
- 版本0:文件1,2&3
- 版本1:文件,1,3&4