[HADOOP] 하이브 버전 0.13.1의 성능 문제
HADOOP하이브 버전 0.13.1의 성능 문제
내 하이브 쿼리를 실행하기 위해 AWS-EMR을 사용하고 하이브 버전 0.13.1을 실행하는 동안 성능 문제가 있습니다.
새 버전의 하이브는 10 행의 데이터를 실행하는 데 약 5 분이 걸렸습니다. 그러나 230804 행에 대한 동일한 스크립트는 2 일이 걸리고 여전히 실행 중입니다. 문제를 분석하고 수정하려면 어떻게해야합니까?
샘플 데이터 :
1 번 테이블:
hive> describe foo;
OK
orderno string
Time taken: 0.101 seconds, Fetched: 1 row(s)
hive>select * from foo;
OK
1826203307
1826207803
1826179498
1826179657
표 2 :
hive> describe de_geo_ip_logs;
OK
id bigint
startorderno bigint
endorderno bigint
itemcode int
Time taken: 0.047 seconds, Fetched: 4 row(s)
hive> select * from bar;
127698025 417880320 417880575 306
127698025 3038626048 3038626303 584
127698025 3038626304 3038626431 269
127698025 3038626560 3038626815 163
내 검색어 :
SELECT b.itemcode
FROM foo a, bar b
WHERE a.orderno BETWEEN b.startorderno AND b.endorderno;
해결법
-
==============================
1.하이브 로그 출력 맨 위에 "경고 : 셔플 조인 JOIN [4] [표 a, b] 스테이지 'Stage-1 Mapred'의 교차 제품입니다."
하이브 로그 출력 맨 위에 "경고 : 셔플 조인 JOIN [4] [표 a, b] 스테이지 'Stage-1 Mapred'의 교차 제품입니다."
편집하다: '교차 제품'또는 직교 좌표 곱은 'a'테이블의 모든 행에 대해 'b'테이블의 모든 행을 반환하는 조건없는 조인입니다. 따라서 'a'가 5 개의 행이고 'b'가 10 개의 행인 예제를 얻거나 5를 곱한 5에 10 = 50 행이 반환됩니다. 하나 또는 다른 테이블에 대해 'null'인 행이 많이있을 것입니다.
이제 20,000 개의 행으로 이루어진 테이블 'a'가 있고 500,000 개의 행으로 구성된 다른 테이블 'b'에 가입하면 SQL 엔진에 10,000,000,000 개의 행으로 이루어진 'a, b'데이터 세트를 반환하도록 요청한 다음 1 천만 행에 대해 BETWEEN 조작을 수행하십시오.
따라서 'b'행의 수를 줄이면 'a'보다 더 많은 이점을 얻을 수 있습니다. 예를 들어, ip_logs 테이블 (표 2)을 필터링 할 수 있다면, 주문 번호 테이블보다 많은 행이 있으면 실행 시간이 단축됩니다. END EDIT
조인 조건을 지정하지 않아도 실행 엔진이 카디 전 곱 (Cartesian product)을 통과하도록 강요합니다. 그것은 모든 테이블을 계속해서 스캔해야합니다. 10 개의 행을 사용하면 문제가 발생하지 않습니다. 20k를 사용하면 수십 개의지도 / 축소 파도가 발생합니다.
다음 쿼리를 시도하십시오.
SELECT b.itemcode FROM foo a JOIN bar b on <SomeKey> WHERE a.orderno BETWEEN b.startorderno AND b.endorderno;
하지만 모델에 가입 할 수있는 열의 수를 파악하는 데 문제가 있습니다. 어쩌면이 표현을위한 데이터 모델이 향상 될 수 있습니까? 샘플을 분명히 읽지 않을 수도 있습니다.
어느 쪽이든, where 절 이전에 비교 횟수를 필터링해야합니다. 하이브에서이 작업을 수행 한 다른 방법은 더 작은 데이터 집합으로 뷰를 만들고 원래 테이블 대신 뷰를 조인 / 일치시키는 것입니다.
from https://stackoverflow.com/questions/27900760/performance-issue-in-hive-version-0-13-1 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지의 단일 열 드롭 (0) | 2019.07.23 |
---|---|
[HADOOP] loadfunc 돼지 UDF를 사용하여 protobuf 형식 파일을 돼지 스크립트에로드 (0) | 2019.07.23 |
[HADOOP] Hive가 저장 프로 시저를 지원하지 않는 이유는 무엇입니까? (0) | 2019.07.23 |
[HADOOP] SQOOP에서 증분 가져 오기를 어떻게 자동화 할 수 있습니까? (0) | 2019.07.23 |
[HADOOP] System에서 Hbase MapReduce로 텍스트 파일 읽기 (0) | 2019.07.23 |