parquet 的谓词下推是否意味着实际上只从磁盘加载所需的数据?
例如如果我创建一个 spark 数据框并且只选择
特定字段,只那些字段会从磁盘中读取吗?
最佳答案
谓词下推处理将扫描哪些值而不是哪些列。 因此,如果您在 A 列上应用过滤器以仅返回值为 V 的记录,则谓词下推将使 parquet 成为可能包含值 V 的只读 block 。 Parquet 在多个级别保存最小/最大统计信息,它会将值 V 与那些最小/最大 header 进行比较,并且只扫描最小/最大值包含值 V 的 block 。 这是用于谓词下推。
parquet 的另一个特点是“投影下推”——它将数据存储在列中,因此当您的投影将查询限制在某些列时,只会返回那些列。不过,此功能并不是所谓的谓词下推。
关于hadoop - Parquet谓词下推,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068278/