为什么计数猪的物品比蜂巢慢得多

时间:2014-09-28 21:44:28

标签: hadoop hive apache-pig

我在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

1 个答案:

答案 0 :(得分:0)

Hive仅对完整聚合使用一个Reducer,而不管输入数据大小如何。如果你想要更高的效率,那么打开hive.map.aggr = true。

Pig根据输入数据的大小使用启发式设置减速器的数量。

reducers = MIN(pig.exec.reducers.max,每个reducer的总输入大小(以字节为单位)/字节数)

一般默认情况下,reducer max为999

你的总输入大小= 10 ^ 12/10 ^ 9

所以你的猪工作减速器= 999.这可能是与蜂巢相比缓慢的原因。

使用并行关键字或设置default_parallel来覆盖reducer num。