【问题标题】:How does Hive partition worksHive 分区的工作原理
【发布时间】:2018-10-28 16:51:24
【问题描述】:

让我们假设下表:

作为架构: ID,NAME,Country 和我的 partition key is country

如果我的查询是这样的:

select * from table where id between 155555756 to 10000000000;

在这种情况下分区将不起作用,对吗? .

简单来说。如果我在查询中不使用分区键怎么办。所以表全扫描会在那里,对吧?

【问题讨论】:

  • 两个答案都是肯定的...您可以在查询上运行解释计划,无论是否使用分区过滤器
  • 将分区想象成 hdfs 层次结构中的文件夹,通向您的存储文件。因为基本上就是这样。 hdfs dfs -ls <LOCATION> 应该告诉你。您可以使用SHOW CREATE TABLE <TABLE>; 来确定hdfs <LOCATION>

标签: hadoop hive hadoop-partitioning


【解决方案1】:

第一个问题的答案是肯定的,这个查询计划不会做分区修剪。

您可以使用以下语句来检查查询是否进行了分区修剪: explain dependency <your query>

回答您的第二个问题 - 视情况而定!

如果 hive.mapred.mode 设置为 strict,则 hive 将不允许进行全表扫描,并且很少有其他“风险”操作,如交叉连接等等,

根据您使用的 hive 版本,这些设置也会影响单个查询可以扫描的分区数

  • hive.metastore.limit.partition.request(或)
  • hive.limit.query.max.table.partition

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2015-12-04
    • 2018-03-11
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多