在查询中使用Hive函数时,Hive分区无效

时间:2015-08-11 14:31:59

标签: hive

过去几天我一直在研究Hive分区。这是我创建的一个例子: -

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

CREATE TABLE TRANSACTIONS (
      txnno INT, 
      txndate STRING, 
      custid INT, 
      amount DOUBLE, 
      category STRING, 
      product STRING, 
      city STRING, 
      state STRING, 
      spendby STRING)

以',';

结尾的行格式分隔字段

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

按如下方式创建另一个表: -

表 - Txnrecordsbycat(分区管理表):

CREATE TABLE TXNRECORDSBYCAT(txnno INT, txndate STRING, custno INT, amount DOUBLE, product STRING, city STRING, state STRING, spendby STRING)

按(STRING类别)分区 由(州)INTO 10桶组成 行格式分隔的字段以',';

结尾

使用以下查询将Transactions表中的数据加载到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 * *等简单的队列并从trxrecordsbycat中选择*,我就可以看到我的查询与非分区表相比在分区表上有效(即占用更少的执行时间)。

但是,只要我的查询变得有点复杂,例如从表中选择count(*),查询就会在分区表上变得不那么有效(即花费更多时间)。

有什么想法可能会发生这种情况吗? 非常感谢您的帮助。

0 个答案:

没有答案