2014-09-28 3 views
0

하이브와 돼지에서 모두 가져온 데이터 세트 (~ 1TB)가 있습니다. 우리의 전체 hadoop 클러스터를 사용하지만 레코드의 수를 계산하기 위해 Hive가 돼지보다 훨씬 빠른 시간 차이가 있습니다. 돼지돼지의 계산 항목이 하이브보다 훨씬 느린 이유

select count(*) from india_tab; 
Time taken: 61.103 seconds, Fetched: 1 row(s) 

:

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를 설정하십시오.

돼지는 입력 데이터의 크기에 따라 휴리스틱 스를 사용하여 축소 기의 수를 설정합니다.

이경 = MIN (pig.exec.reducers.max 바이트 총 입력 크기() 감속기 당/바이트)

일반적 기본 감속기 맥스는 999

UR 총 입력 크기 = 10^12/10^9

귀하의 돼지 작업 감속기 = 999에 대한. 그 이유는 천천히 하이브에 비해 수 있습니다.

평행 키워드를 사용하거나 default_parallel을 설정하여 감속기 num을 무시하십시오.

+0

그래서 나는 테스트를 다시 실행했고 돼지는이 많은 1111 매퍼, 1 개의 감속기, 하이브를 실행합니다. 반면에 하이브는 매퍼의 수입니다 : 406; 감속기의 수 : 1 돼지가 왜 더 많은 문자를 사용하는지 정확히 알 수는 없지만, PARALLEL 문서는 기본적으로 1이기 때문에 동일한 수의 감속기를 사용하고있는 것 같습니다. – BrockP

관련 문제