2013-07-02 5 views
3

돼지와 하이브 간의 성능 차이 (실시간 런타임 및 CPU 시간 측면에서)를 확인했으며 이러한 차이점의 최하점을 찾는 방법을 모색 중입니다. 나는 생성 된 구문 트리, 논리적, 물리적 및지도 축소 계획을 대조하고 비교하기 위해 언어의 설명 기능 (Hive : EXPLAIN 키워드, Pig : pig -e 'explain -script explain.pig')을 모두 사용했습니다. 그러나 둘 다 똑같은 일을하는 것처럼 보입니다. 그러나 작업 추적기는지도의 수에 차이가 있음을 보여 주며 작업을 줄였습니다 (결과적으로 동일한 수의지도를 사용하고 작업을 줄이고 성능 차이는 유지됨). 따라서 내 질문은 다음과 같습니다. 다른 방법으로 어떤 일이 일어나고 있는지 분석 할 수 있습니까 (하위 수준/바이트 코드 수준).성능 : 돼지 대 하이브

EDIT : TPC-T 벤치 마크를 실행 중입니다 (https://issues.apache.org/jira/browse/PIG-2397https://issues.apache.org/jira/browse/HIVE-600). 그러나 더 간단한 스크립트라도 성능 차이가 상당히 큽니다. 예를 들면 :

SELECT (dataset.age * dataset.gpa + 3) AS F1, 
    (dataset.age/dataset.gpa - 1.5) AS F2 
    FROM dataset 
    WHERE dataset.gpa > 0; 
나는 아직도 완전히 (나중에 업데이트됩니다), 그러나 간단한 스크립트의 결과는이 문서에 자세한있는 TPC-H 벤치 마크를 평가해야

: https://www.dropbox.com/s/16u3kx852nu6waw/output.pdf

(JPG : http://i.imgur.com/1j1rCWS.jpg)

+0

테스트 할 때 사용하는 스크립트와 SQL을 표시 할 수 있습니까? – zsxwing

+0

Hive의 테이블 데이터 세트에서 파티션 설정은 어떻게됩니까? – zsxwing

+0

죄송합니다, 무슨 의미인가요? 꽤 이해가 안됩니다 (Hadoop을 처음 사용하는 경우)/Hive – JB2

답변

3

이전에 돼지와 하이브의 일부 소스 코드를 읽었습니다. 나는 몇 가지 의견을 나눌 수있다.

필자는 Join 구현에 중점을 두었으므로 여기서 Pig 및 Hive의 Join 구현에 대한 세부 정보를 제공 할 수 있습니다. Hive의 Join 구현은 Pig보다 효율적이지 않습니다. 왜 Hive가 Join 구현에서 너무 많은 객체 (이러한 작업은 매우 느리고 피해야 만했는지)를 만들어야하는지 잘 모르겠다. 나는 그것이 하이브가 돼지보다 더 천천히 합류하는 이유라고 생각합니다. 관심이 있으시면 CommonJoinOperator 코드를 직접 확인하시기 바랍니다. 그래서 돼지는 보통 고품질의 코드처럼 더 효율적이라고 생각합니다.

+0

감사합니다. 나는 이것에 대해 아주 궁금해. 이상하게 보인다. 나는 비슷한 성능을 낼 것으로 기대했을 것이다. 내가 추천하는 코드 기반의 다른 섹션은 무엇입니까? – JB2

+0

구현에 대한 자세한 내용을 알고 싶습니까? 돼지와 하이브 모두? – zsxwing

+0

예. 특히 성능 차이와 관련하여 나는 문서를 보았다. (그것이 내가 추측하는 출발점이다.) 하지만 어쩌면 당신은 당신이 추천하는 유용한 자료/링크/기사를 가지고있을 것입니다. – JB2

관련 문제