我有一个分区表event_fact
。分区列为dt, type
。然后在该表的顶部创建一个视图。
create view event_fact_view as select
dt, type, columnA, columnB, collect_list(columnC)
from event_fact
group by dt, type, columnA, columnB;
当我运行下面的查询时,无论分区列如何,spark-sql都会对event_fact进行全表扫描。但是,如果我在蜂巢上运行相同的sql,它能够识别出该错误。
select * from event_fact_view where dt='20190501' and type='A';
正如我所确定的,问题与UDF collect_list
有关,如果删除了“ collect_list”,spark sql可以首先进行过滤,然后进行分组。这是引发sql的已知问题吗?我找不到与此相关的任何文档或JIRA。还有其他方法可以collect_list
吗?