我使用以下代码序列
database/
我得到了一个带有谓词下推的执行计划
val obs = spark.read.parquet("s3://xxxx/parquettests/by_pat/")
val single = obs.filter($"pat" === "abcd")
single.explain
执行时间(200个文件,每个3MB,哈希分区为" pat")为32秒。
鉴于pat = abcd仅包含在一个文件中,即32秒读取3MB文件并跳过所有其他文件。听起来很多。
我已经检查过这些文件的镶木地板工具,并且列中有PLAIN_DICTIONARY,两页都是" RLE:BIT_PACKED VLE:PLAIN [更多] VC:21400"。
因此我怀疑字典压缩会回落到PLAIN,但我不确定并且我所有尝试改变它都不起作用。
思想?
答案 0 :(得分:0)
Spark 2.2和Parquet 1.8目前不支持字典编码列的Predicate Push Down 最重要的是,您的镶木地板文件太小,您应该将它们合并为1或2个文件。