码迷,mamicode.com
首页 > 其他好文 > 详细

hive 多个key需要 group by

时间:2014-08-05 15:22:49      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:使用   文件   数据   div   设计   table   rom   优化   

请问下,如果有多个统计,要统计的数据都一样,每个统计只是group by 的key不一样,
怎样做,才能让这些统计最快完成?

恩,比如有10个统计,每个统计都是读取的同一份数据,但是统计的维度不一样,就是group by的key不一样
你们都是怎么处理的?
语句类似这个::
from(
select k1,k2,k3 ffrom table
) tmp

insert directory ... select k1,count(1) group by k1 USING ‘replicated,skewed....‘
insert directory ... select k2,count(1) group by k2
 
虽说hive会对原表扫描一次,然后执行下面的操作,但是基本上每个group by 都会有一个Mapreduce完成,更重要的是考虑到map端优化以及数据倾斜,可能一个group by需要两个MR完成。
有没有好的方式呢??
使用MR直接实现:
  1、数据输入就是那个原表
  2、关键是key的设计,将分组的key分别继承一个BaseKey,这个BaseKey就是Map输出key的类型
  3、分区的设计,依据key的实际类型进行划分,使同一个key能够划到同一个reduce里面,进行聚集。
  4、针对结果进行更改文件名字(可在reduce输出的第一行设置标记)
---------------------
  缺陷:
  reduce的个数需要>=分组的个数,这样数据量大的情况下不利。
  

hive 多个key需要 group by,布布扣,bubuko.com

hive 多个key需要 group by

标签:使用   文件   数据   div   设计   table   rom   优化   

原文地址:http://www.cnblogs.com/jsunday/p/3892084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!