Hive 병행 실행 job

Oacle rac 를 사용 해 본 사람 은 모두 parallel 의 용 도 를 알 고 있 을 것 이다.
병행 집행 은 확실히 임무 의 집행 속 도 를 크게 가속 화 할 수 있 지만, 사용 하 는 자원 을 줄 일 수 는 없다.
Hive 에서 도 병행 실행 옵션 이 있 습 니 다.
 
 
set hive.exec.parallel=true;   //작업 병렬 실행 열기
 
set hive.exec.parallel.thread.number=16; //같은 sql 은 최대 병렬 도 를 허용 합 니 다. 기본 값 은 8 입 니 다.
 
같은 SQL 에서 생 성 되 는 JOB 에 대한 의존 도가 없 는 경우 JOB 를 동시에 시작 합 니 다.
예 를 들 면:
 
from (
select phone,to_phone, substr(to_phone,-1) as key
from youni_contact4_lxw 
where youni_id='1' 
and length(to_phone) = 11 
and  substr(to_phone,1,2) IN ('13','14','15','18') 
group by phone,to_phone, substr(to_phone,-1) 
) t
insert overwrite table youni_contact41_lxw partition(pt='0')
select phone,to_phone where key='0'
insert overwrite table youni_contact41_lxw partition(pt='1')
select phone,to_phone where key='1'
insert overwrite table youni_contact41_lxw partition(pt='2')
select phone,to_phone where key='2'
insert overwrite table youni_contact41_lxw partition(pt='3')
select phone,to_phone where key='3'
insert overwrite table youni_contact41_lxw partition(pt='4')
select phone,to_phone where key='4'
insert overwrite table youni_contact41_lxw partition(pt='5')
select phone,to_phone where key='5'
insert overwrite table youni_contact41_lxw partition(pt='6')
select phone,to_phone where key='6'
insert overwrite table youni_contact41_lxw partition(pt='7')
select phone,to_phone where key='7'
insert overwrite table youni_contact41_lxw partition(pt='8')
select phone,to_phone where key='8'
insert overwrite table youni_contact41_lxw partition(pt='9')
select phone,to_phone where key='9';

 
이 SQL 은 11 개의 job 를 생 성 합 니 다. 첫 번 째 job 는 임시 표를 만 드 는 job 입 니 다. 후속 job 는 모두 의존 합 니 다. 이 때 병렬 시작 이 없습니다.
첫 번 째 job 가 끝나 면 후속 job 가 병행 시 작 됩 니 다.
 
 
실행 시간 비교:
 
병렬 사용 안 함: 35 분
8 개의 병렬 사용 하기: 10 분
16 개의 병렬 사용 하기: 6 분
 
물론 시스템 자원 이 비교적 한가 할 때 만 우세 하 다. 그렇지 않 으 면 자원 이 없 으 면 병행 할 수 없다.
 
 더 많은 빅 데이터 Hadoop, Spark, Hive 의 글, 주목 하 세 요.
 
 

좋은 웹페이지 즐겨찾기