我在玩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>
谢谢,罗伊
1条答案
按热度按时间sh7euo9m1#
这是spark-17636中记录的Spark问题