【发布时间】:2020-03-07 19:15:45
【问题描述】:
如果我有一个使用多级分区创建的表,即由两列(州、市)组成,如下所示:
state=CA,city=Anaheim
state=Texas,city=Houston
state=Texas,city=Dallas
state=Texas,city=Austin
state=CA,city=SanDiego
如果我运行这样的选择查询:
select * from table_name where city=Houston
即在哪里使用了第二个分区列,它会只扫描state=Texas 中的city=Houston 分区吗?我很确定这就是 Hive 的运作方式,但我很想确认 Spark 中的行为。另外,如果在 EMR 的 Spark 中执行,行为会有什么不同吗?
【问题讨论】:
-
它应该读取所有顶级文件夹;然后所有子文件夹找出
houston在哪里。但这应该非常快,因为它只是遍历文件夹。 -
谢谢。这意味着它不会遍历二级分区内的数据,而只是遍历元数据?
-
不应该。我不明白为什么会这样。运行查询并检查一次
标签: apache-spark hive apache-spark-sql amazon-emr hive-partitions