假设下表:作为架构: ID,NAME,Country 还有我的 partition key is country .如果我的问题是: select * from table where id between 155555756 to 10000000000; 在那种情况下,隔板不起作用,对吗。简单地说,如果我在查询中不使用分区键呢。所以全表扫描会在那里,对吗?
ID,NAME,Country
partition key is country
select * from table where id between 155555756 to 10000000000;
dzhpxtsq1#
第一个问题的答案是肯定的,这个查询计划不会进行分区修剪。您可以使用以下语句检查查询是否执行分区修剪: explain dependency <your query> 回答你的第二个问题-视情况而定!如果 hive.mapred.mode 设置为 strict ,则配置单元将不允许执行全表扫描,以及其他一些“危险”操作,如交叉连接等。,根据您使用的配置单元版本,这些设置还影响单个查询可以扫描的分区数 hive.metastore.limit.partition.request (或) hive.limit.query.max.table.partition
explain dependency <your query>
hive.mapred.mode
strict
hive.metastore.limit.partition.request
hive.limit.query.max.table.partition
1条答案
按热度按时间dzhpxtsq1#
第一个问题的答案是肯定的,这个查询计划不会进行分区修剪。
您可以使用以下语句检查查询是否执行分区修剪:
explain dependency <your query>
回答你的第二个问题-视情况而定!如果
hive.mapred.mode
设置为strict
,则配置单元将不允许执行全表扫描,以及其他一些“危险”操作,如交叉连接等。,根据您使用的配置单元版本,这些设置还影响单个查询可以扫描的分区数
hive.metastore.limit.partition.request
(或)hive.limit.query.max.table.partition