2014-09-28 17 views
0

我有一套我在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

蜂房僅使用一個用於計數用於全骨料減速器而不管輸入數據的大小。如果你想要更高的效率,那麼打開hive.map.aggr = true。

Pig根據輸入數據的大小使用啓發式方法設置reducer的數量。

減速器= MIN(pig.exec.reducers.max,總輸入的大小(以字節計)每減速器/字節)

通常默認減速器max是999

烏爾總輸入大小= 10^12/10^9

所以對於你的豬工作reducer = 999.這可能是與蜂巢比較慢的原因。

使用並行關鍵字或設置default_parallel覆蓋reducer num。

+0

所以我再次進行了測試,豬跑了很多1111臺mappers,1臺reducer,蜂巢另一方面是mappers的數量:406;還原劑的數量:1 我看不清楚爲什麼Pig會使用更多,PARALLEL文檔默認說它也是1,所以看起來它們使用相同數量的還原劑 – BrockP 2014-12-04 21:34:15

相關問題