Hive 在查询中使用配置单元函数时,配置单元分区无效

Hive 在查询中使用配置单元函数时,配置单元分区无效,hive,Hive,在过去的几天里,我一直在研究蜂巢分区。以下是我创建的一个示例:- 表-事务(非分区托管表): 行格式分隔字段,以“,”结尾 使用load命令加载此表中的数据 创建了另一个表,如下所示:- 表-Txnrecordsbycat(分区托管表): 分区依据(类别字符串) 按(状态)聚集到10个存储桶中 行格式分隔字段,以“,”结尾 使用以下查询将数据从事务表加载到Txnrecordsbycat表 FROM TRANSACTIONS txn INSERT OVERWRITE TABLE TXNRECORD

在过去的几天里,我一直在研究蜂巢分区。以下是我创建的一个示例:-

表-事务(非分区托管表):

行格式分隔字段,以“,”结尾

使用load命令加载此表中的数据

创建了另一个表,如下所示:-

表-Txnrecordsbycat(分区托管表):

分区依据(类别字符串) 按(状态)聚集到10个存储桶中 行格式分隔字段,以“,”结尾

使用以下查询将数据从事务表加载到Txnrecordsbycat表

FROM TRANSACTIONS txn INSERT OVERWRITE TABLE TXNRECORDSBYCAT PARTITION(category) select txn.txnno,txn.txndate,txn.custid, txn.amount, txn.product,txn.city, txn.state, txn.spendby,txn.category DISTRIBUTE BY CATEGORY; 
现在,只要我触发简单的查询,如select*from Transactions和select*from trxrecordsbycat,我就可以看到我的查询在分区表上比在非分区表上更高效(即执行时间更短)

然而,一旦我的查询变得有点复杂,比如select count(*)from table,查询在分区表上的效率就会降低(即需要更多时间)

你知道会发生什么吗?
非常感谢你的帮助

要了解分区与未分区的优点,您应该在where子句中使用分区字段
select count(*)from table
不使用分区键来减少需要读取的分区数,更重要的是,配置单元必须在分区结构中导航。虽然我认为开销很小。您能提供您正在运行的确切查询以及相关的执行时间吗?要了解分区与未分区的优势,您应该在where子句中使用分区字段
select count(*)from table
不使用分区键来减少需要读取的分区数,更重要的是,配置单元必须在分区结构中导航。虽然我认为开销很小。您能否提供您正在运行的确切查询以及相关的执行时间?
CREATE TABLE TXNRECORDSBYCAT(txnno INT, txndate STRING, custno INT, amount DOUBLE, product STRING, city STRING, state STRING, spendby STRING)
FROM TRANSACTIONS txn INSERT OVERWRITE TABLE TXNRECORDSBYCAT PARTITION(category) select txn.txnno,txn.txndate,txn.custid, txn.amount, txn.product,txn.city, txn.state, txn.spendby,txn.category DISTRIBUTE BY CATEGORY;