【发布时间】:2019-12-26 19:23:43
【问题描述】:
我知道 Parquet 文件在每个行组内的 column 级别存储列统计信息,以便对数据进行更有效的查询。
它是否还在file 级别存储列统计信息(以避免不必要地读取整个文件)? page 级别的专栏怎么样?
【问题讨论】:
标签: apache-spark parquet
我知道 Parquet 文件在每个行组内的 column 级别存储列统计信息,以便对数据进行更有效的查询。
它是否还在file 级别存储列统计信息(以避免不必要地读取整个文件)? page 级别的专栏怎么样?
【问题讨论】:
标签: apache-spark parquet
Parquet 确实存储了行组的最小/最大统计信息,但这些统计信息并未存储在行组本身中,而是存储在文件页脚中。结果,如果没有行组匹配,则无需读取文件的任何部分,而不是页脚。整个文件不需要单独的最小/最大统计信息,行组级别的统计信息解决了这个问题,因为行组通常很大。
也存在页面级最小/最大统计信息,但在未发布的 1.11.0 候选版本中称为 column indexes 并且仅是 implemented。它们比行组级别的最小/最大统计信息稍微复杂一些,因为行边界与页边界不对齐,这需要额外的数据结构来在所有请求的列中查找相应的值。无论如何,此功能允许精确定位数据的页面级位置,并从根本上提高高度选择性查询的性能。
【讨论】: