PySpark两种Parquet分区生成方式的查询有效性验证
两种Parquet分区生成方式的分区剪枝效果对比
循环单独处理每个CSV的情况
由于每个CSV的ID值固定,处理后会生成对应ID的独立分区目录(比如ID=B/或ID/B/这类符合分区规范的结构)。当执行SELECT * from 'ID/*/*.parquet' WHERE ID = 'B'时,查询引擎能直接识别分区目录与ID值的对应关系,触发分区剪枝,只会扫描ID=B对应的目录,不会读取A和C分区的文件。合并为ABC.csv后统一处理的情况
只要你在处理合并后的CSV时,明确指定按ID列作为分区键写入Parquet,最终生成的分区目录结构会和第一种方式完全一致(每个ID对应独立的子目录)。这种情况下,查询同样会触发分区剪枝,仅扫描ID=B的目录。
注:如果合并后未按ID分区写入,而是直接生成无分区的Parquet文件,自然不会触发分区剪枝,但你明确说明要生成按ID分区的目录,因此该情况不在讨论范围内。
总结:只要最终生成的Parquet分区目录结构符合查询引擎的分区识别规范,两种方式都会触发分区剪枝,仅扫描目标ID对应的目录。
内容的提问来源于stack exchange,提问作者Fabrice
相关产品推荐
相关产品推荐

