我在Hive和Pig中导入了一组数据(~1TB)。使用我们的整个hadoop集群,但我有很大的时间差异,Hive比只计算记录数的速度明显快于猪。
select count(*) from india_tab;
Time taken: 61.103 seconds, Fetched: 1 row(s)
在PIG中:
data = LOAD 'warehouse/india_tab/*' USING PigStorage()
AS (ac_id:int, c_code01:chararray, longitude:float, latitude:float, satillite:chararray, month:chararray, day:chararray, timestamp:int, cm:int, li:double, tir:int,vis:int);
grpd = GROUP data ALL;
cnt = FOREACH grpd GENERATE COUNT(data);
DUMP cnt;
Runtime: 6m 9s
答案 0 :(得分:0)
Hive仅对完整聚合使用一个Reducer,而不管输入数据大小如何。如果你想要更高的效率,那么打开hive.map.aggr = true。
Pig根据输入数据的大小使用启发式设置减速器的数量。
一般默认情况下,reducer max为999
你的总输入大小= 10 ^ 12/10 ^ 9
所以你的猪工作减速器= 999.这可能是与蜂巢相比缓慢的原因。
使用并行关键字或设置default_parallel来覆盖reducer num。