Press "Enter" to skip to content

达尔塔湖-分区、Z-Order和Liquid聚类

不同的分区/聚类方法在Delta中是如何实现的?在实践中它们是如何工作的?

Photo by frame harirak on Unsplash

其中一个使大数据变得困难的问题一直存在于其名字中,那就是它很大。分区,特别是当做得好的时候,一直是通过减少需要读取的数据子集来改善广泛数据查询执行时间的一种方式。然而,分区数据是复杂的,并且需要仔细考虑和一些提前规划,因为今天的需求可能不适用于未来的需求。例如,在Hive风格的分区中,列可能需要更改甚至增加其基数并使数据过分分区(小文件问题),这需要对数据进行完全重构,这并不理想。

Z-Order聚类是另一种用于数据跳跃的技术,也避免了完整的数据扫描。然而,这种技术存在一些限制。其中一个是新摄取的数据默认没有排序,用户需要重新聚类,这意味着已经聚类的数据将被重新聚类并重写,从而增加了操作所需的时间。Z-Order用户还需要每次运行命令时定义聚类列,因为它们不是任何表属性的一部分。

这就是液体聚类(Liquid Clustering)进入游戏的地方。其前提是可以无缝地适应当前数据的布局,同时也能够适应未来的需求,而无需重写任何已经聚类的数据。

在本文中,我们将解释Delta中不同数据修剪策略的细节以及它们的应用方式。

分区修剪 – Hive风格的分区

Hive-style partitioning — Image by author

Hive风格的分区是一种将表组织成小块的方式。这些数据块被组织成包含分区值数据的多个子文件夹。

    dbfs://people10m/gender=M/data_0.json dbfs://people10m/gender=M/data_1.json dbfs://people10m/gender=F/data_0.json...
Leave a Reply

Your email address will not be published. Required fields are marked *