【发布时间】:2019-10-15 03:46:39
【问题描述】:
我有一张表zhihu_answer_increment,它按列ym 分区。当我执行查询select distinct(ym) from zhihu.zhihu_answer_increment; 时,完成了 1 分钟。在此过程中,hive 启动了一个 map-reduce 作业。这是日志:
INFO : MapReduce Jobs Launched:
INFO : Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 3.59 sec HDFS Read: 14969 HDFS Write: 106 HDFS EC Read: 0 SUCCESS
INFO : Total MapReduce CPU Time Spent: 3 seconds 590 msec
INFO : Completed executing command(queryId=hive_20191015113300_a6f58bad-f35b-4243-890a-a0d9ba9a5210); Time taken: 95.048 seconds
INFO : OK
相比之下,show partitions zhihu_answer_increment; 返回结果的速度要快得多(只需几秒钟)。但我需要将select distinct(ym) from zhihu.zhihu_answer_increment 作为子查询。
那么我该如何优化这个查询呢?而且我不明白为什么它启动了mapreduce作业,就我而言,仅检查分区目录就足以进行此查询。或者我的考虑太简单了。
【问题讨论】:
标签: performance hive query-optimization hive-partitions