2017-11-29 18 views
0

는 기본적으로 내가 이렇게되면 코드를 실행하고 있습니다 : 표 2의 레코드 표에 기록하이브에 너무 오래 걸리는 이유는 무엇입니까?

Create table abc as 
select A.* from 
table1 A 
Left outer join 
table2 B 
on 
A.col1=B.col1 and A.col2=B.col2; 

수 = 7,009,102 수 = 1,787,493

내 스크립트하지만 내 스크립트에 유사한 6 개 질문이 네 번째 쿼리에 걸렸습니다. 나는 tez 및 mapreduce를 통해 실행을 시도했지만 둘 다 같은 문제가 있습니다.

mapreduce에서지도에 걸렸을 때 0 % 감소하고 1 시간 후에도 0 % 감소합니다. 감속기가 없습니다. Tez에서는 1 시간 만에 22 %입니다.

로그를 확인하면 '진행 상황 TaskAttempt 시도 _12334_m_000003_0 : 0.0'과 같은 많은 항목이 표시됩니다.

나는 tez에서 작업을 실행했고, 이제는 거의 3 시간이고 작업은 Map-2 Vertice에서 2 번 실패하려고합니다.

답변

0

일반 팁 울부 짖는 링크를 참조 빠른

1 ORC 파일 사용
하이브는 ORC 파일을 지원합니다. 하이브는 술어 푸시 다운 (하이브의 푸시 업), 압축 등의 기술을 통해 환상적인 속도 개선 효과를 제공하는 새로운 테이블 저장소 형식 인 ORC 파일을 지원합니다.
모든 HIVE 테이블에 대해 ORCFile을 사용하는 것은 간단 할뿐만 아니라 HIVE 쿼리에 대한 빠른 응답 시간을 얻는 데 매우 유용합니다.

CREATETABLEA_ORC ( 
customerIDint, namestring, age int, address string 
) 

2. 벡터 라이 제이션 벡터화 된 쿼리 실행은 스캔, 집계, 필터와 같은 작업의 성능을 향상하고, 단일 행 대신 한 번에 1024 개 행 일괄마다 그들을 수행하여, 결합한다. 하이브 0.13에 도입 가이 기능은 크게 쿼리 실행 시간을 개선하고 쉽게 두 개의 매개 변수 설정을 사용할 수 있습니다 : 기반

I. sethive.vectorized.execution.enabled = true; 
II. sethive.vectorized.execution.reduce.enabled = true; 

3. 파티션 조인 : 은 하이브에 조인 최적화하기 위해, 우리는을 줄일 수있다 쿼리 검색 시간. 이를 위해 우리는 'WHERE'절이나 JOIN의 ON 절에 파티션 조건부를 지정하여 파티션이있는 Hive 테이블을 만들 수 있습니다. 예
가 '. 상태'표 '상태 뷰'열에 분할 아래 쿼리는 특정 상태에 대한 행을 검색 : 테이블 상태도이면 최적화가 하이브

SELECT state_view.* FROM state view WHERE state_view.state= ‘State-1’ AND state_view.state = ‘State-3’; 

조인 다음과 같이 다른 테이블 도시 사용자와 합류, 당신은 ON 절에서 파티션의 범위를 지정할 수 있습니다

SELECT state_view.* FROM state_view JOIN city_users ON (state_view.state = city_users.state); 

희망이 게시물은 하이브에서 모든 조인 최적화 요구를 도왔다.