在 deltaLake 中使用超空间索引而不是 Z 排序有什么好处?

问题描述

我在 Azure Databricks 中有以增量表格式存储的流数据。为了优化,我目前正在使用 Z 排序。与 Z-ordering 相比,使用 Hyperspace 索引子系统有什么好处吗?

解决方法

免责声明:我自己没有使用 Hyperspace,只是阅读了文档和代码示例。

按功能划分的超空间更接近于 Databricks Delta 实现的 Data Skipping 功能 - 它允许仅读取必要的数据。但是在 Databricks 上,数据的索引在写入时会自动发生,而在 Hyperspace 中,您需要构建索引并维护它们。

ZOrder 是一个不同的功能 - 它优化了数据的放置,因此经常一起使用的数据更有可能真正放在一起,因此您将读取更少的文件。 Hyperspace 没有——它只是索引数据,数据的位置由底层文件格式定义。

附言这是来自 Databricks 的关于数据跳过和 ZOreder 的好blog post