apachespark查询parquet文件嵌套列扫描整个列,即使对记录应用了 predicate 下推

mzaanser  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(342)

我在玩Parquet地板。我有一个事件的Parquet文件,每个都由时间戳、主题和标记组成。文件按主题排序,然后按时间戳排序。我运行的查询可以描述为:

select topic from T where topic = 404;

它运行得很快,返回的行很少。它比:

select topic from T;

当我把它改成:

select tags from T where topic = 404;

它跑得和跑步一样慢

select tags from T;

分析计划时,似乎(使用spark时)应用了 predicate push down,但从性能上看,我可以假设它不应用于标记列。
我用Hive,Spark和普雷斯托测试过。有什么可以做的吗?或者其他技术可以更好地处理 parquet 嵌套阵列?
spark执行计划:
==实际计划==

  • 项目[标签4]

+-*筛选器(isnotnull(主题#3l)&&(主题#3l=404))
+-*filescan parquet[topic#3l,tags#4]批处理:false,格式:parquet,位置:inmemoryfileindex[file:/example path],分区筛选器:[],pushedfilters:[isnotnull(topic),equalto(topic,404)],readschema:struct>
谢谢,罗伊

相关问题