让我们假设下表:
作为模式:
ID,NAME,Country
和我的partition key is country
。
如果我的查询如下:
select * from table where id between 155555756 to 10000000000;
在这种情况下,该分区将无法工作,对吗? 。
简单的说。如果我在查询中不使用分区键怎么办?这样就可以进行表全扫描了吧?
答案 0 :(得分:0)
第一个问题的答案是是,此查询计划不会进行分区修剪。
您可以使用以下语句检查查询是否进行分区修剪:
explain dependency <your query>
第二个问题的答案-取决于!
如果将hive.mapred.mode
设置为 strict
,则配置单元将不允许进行全表扫描,并且很少进行其他“风险” 诸如交叉联接等操作,
根据您使用的配置单元的版本,这些设置还会影响单个查询可以扫描的分区数量
hive.metastore.limit.partition.request
(或)hive.limit.query.max.table.partition