新粉请关注我的公众号
我收到了一封邮件,具体内容截图如下:
简单说,就是官宣Delta Lake 2.0正式发布了。这个距离Databricks的年度大会上面宣布,也有些时日了。
Databricks在发布里面指出了一些新功能。我挑重点讲几个。
首先是Change Data Feed。这个东西的作用就是你对Delta Table做的数据改变,它都会生成Change Data Feed。你要是订阅了这个东西,比如说把它放进一个Kafka集群里面,理论上就可以准实施复制出一份数据来。
这个东西有点像什么呢?MysSQL的binlog,很多系统都是挂载成为MySQL的备份节点,通过binlog来复制数据的。比如说某些著名HTAP NewSQL们。。。
这东西用好了,也可以玩出花来,我就不展开讲了。
然后是正式开源了Z-Order。Z-Order是个多维clustering的排序法,简单来说,如果我们在所有维度都比较靠近的话,我们更有可能在一起。
这个东西我也算是讲过很多遍了。用它和data skipping可以有效过滤数据文件,按照Databricks好多年前发的论文的说法,大概是过滤一半的文件吧。
Z-Order不是什么新鲜东西,新鲜的是为什么它要选择在这个时候开源,而不再指望靠Z-Order卖钱了。我想原因无非几个,Z-Order没那么吸引人,竞争对手也有了,以及可能和Snowflake支持Iceberg有关。
当然具体原因是什么,我是肯定没办法知道的。只有Databricks的决策的人知道了。不过这也反映出了Databricks鸡贼的本质。能不开源就不开源,除非必须开源出来捞好处了。
Idempotent write for Delta Tables这东西主要是用在streaming里面,某个microbatch如果挂掉重试的话,系统可以根据两个标识认出来这个家伙之前已经来过,不会重复写。
不过不管怎么改microbatch终究是microbatch,总是没办法和Flink的真正的流计算比的。
我记得Databricks在今年的大会上也宣布要对流计算做点什么。但是好像比较失望的是,没有打算改变microbatch的基础架构。
我还专门查了一下流计算现在的负责人,居然把原来Twitter做Storm的人给挖过去了,难怪又开始做流计算了。但是讲真,Storm也好Spark也好,都不如挖Flink的创始人来得直接啊。毕竟Flink的创始人已经从阿里巴巴买的创业公司里面走掉了。对吧,拿Flink的人做Spark的事,才精彩。
最后讲一个“Support for dropping columns in a Delta table as a metadata change operation.” 这话读起来拗口,我来通俗翻译一下。
比如说你有个表里面有column A,B,C,如果你想删了C,在今天,这是个麻烦的事情,因为你需要读所有的parquet文件,然后从里面把C的数据删掉。这就费时间了。
Databricks说,其实我有个鬼点子,这个鬼点子先定义一个mapping表,比如说: A=uuid1, B=uuid2, C=uuid3。然后在实际的parquet文件里面,用uuid1,uuid2,uuid3来处理列名。
这个时候你要删除column C,就只需要把mapping表里面的 C=uuid3干掉就好了。
接下来如果要读取表的时候,uuid3因为没有对应的列,在读数据的时候就可以直接column skipping掉了。
但是这里有一个坏处,C的数据实际上还是被保留在了磁盘上。只不过再也读不出来了。总之你得到了删除column的速度,失去了磁盘空间,得失到底值不值得,你自己去考虑和选择吧。
有时候我觉得,公司还是要会宣传,会宣传的意思就是要会说神神叨叨别人听不懂的高大上的话。
Delta Lake2.0开源了,不知道下面会不会迎来春天呢?
我觉得吧,如果2019年能够大大方方把这些都开源了,估计2022年也不一定有Iceberg什么事情了。
三年在IT界,可以改变的太多了。2022年开源,效果大概率是没那么好了。但是Databricks还是有机会的。