数据库 频道

为什么Databricks Delta Lake表格式开源很重要?

早在2019年,Databricks就推出了Delta,通过Parquet数据表格式为Spark云工作负载提供事务完整性。随着时间的推移,Delta演变成自己的表格式,也变得更加开放,但关键元素仍然是专有的。但是现在,正如Delta的创造者上周在数据+人工智能峰会上所说,Delta表格式的全部内容将被开源。

在Delta之前,数据湖和数据仓库是两个不同的世界,Databricks软件工程师Michael Armbrust解释说,他是Delta Lake、Spark SQL和Spark Structured Streaming的创造者。

“Delta是为了统一这两个世界而创建的。”Armbrust在Moscone中心的主题演讲中说,“它为数据湖带来了ACID事务。它带来了速度和索引,并且不牺牲可扩展性和弹性。这是实现Lakehouse的关键所在。”

该产品最初的名称是Databricks Delta,它通过保持Parquet文件的沿袭变化,增强了该公司基于Apache spark的云服务。Parquet文件是一种压缩列式数据格式,在Hadoop集群中脱颖而出,至今仍是现代云中大数据系统的核心主力。

Armbrust说,虽然Parquet“很酷”,但它仍然有一堆问题。“它是数据库的一部分,”他说。“[但]事实证明,大量的文件集合并不是数据库。”

Armbrust不断地处理来自用户的错误报告,他们抱怨Spark被破坏。但问题不在Spark。相反,问题的根源比这更深。Armbrust说,因为没有事务,Spark用户由此正在破坏他们自己的Parquet表。

“当他们的工作因为机器丢失且没有自行清理而失败时,许多人将写入一个表中并破坏它,”这位前谷歌博士后研究员说。“没有强制执行模式,所以如果你把任何模式的数据丢到文件夹里,它就会使它无法被读取。在云计算方面有很多复杂的工作。Hadoop文件系统并不是专门为它构建的。我相信在座的各位都记得设置直接输出提交器,如果设置错了,就会出问题。而且,即使只是处理大表也很慢。仅仅列出所有的文件可能就需要一个小时。”

Armbrust在2017年Spark峰会(数据+AI峰会的前身)上与用户讨论了这个问题,并认为一定有更好的方法。这就是Databricks Delta的起源,Armbrust在2018年的会议上介绍了它。

“这是第一批完全事务性的存储系统之一,可以保留云的所有最好部分。”他说,“而且更棒的是,它经过了我们数百名用户大规模地实战测试。”

但Delta “太好,不能被Databricks独享”,Armbrust说。“所以在2019年,我们回来了,宣布开放了Delta的源代码。我们不仅仅是开源了协议,描述了不同的人如何连接在系统中进行交易。我们实际上也开放了我们经过实战测试的Spark参考实现,把所有的代码放在GitHub上。”

Delta的工作继续进行。该公司开发了优化等命令,它可以自动获取微小的文件,并以事务一致的方式将它们压缩成一个更大的文件,从而提供更好的性能。

“我们在它旁边建立了这个非常酷的命令,叫做优化Zorder,它实际上是把你的数据映射到一个多维空间填充曲线上,这样你就可以在多个维度上高效地过滤,”Armburst说。“这与基于统计学的做数据跳过的这一很酷的技巧配合得非常好。它基本上就像一个粗粒度的云端索引。我们增加了从多个集群写入这些表的能力,还有一大堆其他我没有时间谈论的东西。”

然而,所有这些额外的东西并不是Databricks贡献给开源技术的一部分。现在,Databricks在展会上宣布的Delta Lake 2.0已经改变了这种情况。随着这一产品的推出,所有这些功能现在都被赋予给任何想要使用它们的人。

Databricks公司首席执行官Ali Ghodsi说,这种以专有方式开发软件,然后再将其开源的做法确保了软件的质量更高。

“我们发现我们可以更快地发展,构建专有版本,然后在经过实战测试后,再将其开源,就像我们对Delta所做的那样。”Ghodsi在上周一的新闻发布会上说,“这样我们可以走得更快。我们可以与客户快速迭代,在开源之前让它达到成熟状态。”

开源Delta Lake 2.0的举动也让Databricks重新回到开放数据生态系统的讨论中。Databricks软件开发实践的专有性质受到了Dremio等分析查询工具供应商的批评,Dremio已经转向使用Apache Iceberg,这是另一种表数据格式,可以解决Databricks使用Delta格式解决的许多相同问题。

Dremio首席技术官Tomer Shiran曾怀疑Databricks是否试图通过保持格式的专有性来锁定客户。现在这种猜测已经没有意义了,因为Delta Lake已经开源了。

展望未来,我们将拭目以待Delta和Apache Iceberg如何在开放数据生态系统中争夺支持者。在以一致的方式管理云中的大数据方面,Iceberg抢占了先机,成为了一个新标准,并在Hadoop时代引发的大数据混乱中占据了主导地位。

Databricks的许多竞争对手,包括Snowflake和AWS(也是Databricks的合作伙伴)都采用了Iceberg。Iceberg在2018年出现,以解决Apache Hive表中围绕数据正确性和一致性的长期问题。鉴于Delta的开源,Iceberg是否能保持这种领先优势,谁也说不准。

作者:Alex Woodie

0
相关文章