Parquet 文件在哪些级别存储 min/max/distinct(等)统计信息?
Which levels does a Parquet file store min/max/distinct (etc.) statistics on?
我知道 Parquet 文件在每个行组内的 column
级别存储列统计信息,以允许在数据之上进行更高效的查询。
它是否也在 file
级别存储列统计信息(以避免不必要地读取整个文件)? page
列的水平如何?
Parquet 确实存储了行组的 min/max 统计信息,但这些统计信息并未存储在行组本身内,而是存储在文件页脚中。因此,如果 none 行组匹配,则无需读取页脚以外的文件的任何部分。为此,不需要对整个文件进行单独的 min/max 统计,行组级别的统计解决了这个问题,因为行组通常很大。
页面级 min/max 统计信息也存在,但在未发布的 1.11.0 候选版本中称为 column indexes and are only implemented。它们比行组级别 min/max 统计信息稍微复杂一点,因为行边界与页边界不对齐,这需要额外的数据结构才能在所有请求的列中找到相应的值。无论如何,此功能允许精确定位数据的页面级位置并从根本上提高高选择性查询的性能。
我知道 Parquet 文件在每个行组内的 column
级别存储列统计信息,以允许在数据之上进行更高效的查询。
它是否也在 file
级别存储列统计信息(以避免不必要地读取整个文件)? page
列的水平如何?
Parquet 确实存储了行组的 min/max 统计信息,但这些统计信息并未存储在行组本身内,而是存储在文件页脚中。因此,如果 none 行组匹配,则无需读取页脚以外的文件的任何部分。为此,不需要对整个文件进行单独的 min/max 统计,行组级别的统计解决了这个问题,因为行组通常很大。
页面级 min/max 统计信息也存在,但在未发布的 1.11.0 候选版本中称为 column indexes and are only implemented。它们比行组级别 min/max 统计信息稍微复杂一点,因为行边界与页边界不对齐,这需要额外的数据结构才能在所有请求的列中找到相应的值。无论如何,此功能允许精确定位数据的页面级位置并从根本上提高高选择性查询的性能。