본문 바로가기

조인3

[hive] 맵조인과 셔플조인(Map Join vs Shuffle Join) hive의 맵조인과 셔플조인의 차이를 확인해 보겠습니다. 다음의 조인 쿼리에서 table_a는 14.7G이고, table_b는 5KB입니다. 이 테이블을 조인할 때 각 조인에 따른 성능을 확인해 보면 셔플 조인일 때는 리듀서 단계가 추가되고 맵 조인에 비하여 2배의 시간이 더 걸리는 것을 확인할 수 있습니다. # table_a와 table_b를 조인하여 join_test 테이블 생성 # table_a: 14.7 GB # table_b: 5 KB CREATE TABLE join_test AS select a.deviceid, b.cnty_cd from db_a.table_a a, db_b.table_b b where a.date = '20191020' and a.code = b.code_cd ; 작업 시간.. 2020. 6. 9.
[hive] 하이브의 조인방식(hive join) 하이브의 세가지 조인 방식에 대해서 알아보겠습니다. 셔플조인 매퍼에서 각 테이블을 읽고 셔플 단계에서 조인되는 키를 기준으로 파티션닝후 셔플을 진행하여 각 리듀서에서 조인을 수행 어떤형태의 데이터 크기와 구성에도 사용 가능 가장 자원을 많이 사용하고 느린 조인 방식 맵조인 (브로드캐스트 조인, 맵사이드 조인) 작은 사이즈의 테이블이 메모리에 올라가고, 각 매퍼에서 조인을 수행후 결과를 반환하는 방식 가장 큰 테이블에서 가장 빠른 단일 스캔 작은 테이블은 메모리에 들어갈 정도로 작아야 함 -- 맵조인 사용여부 설정, 3개 이상의 테이블을 조인할 때 맵조인 사용여부 설정하는 옵션 hive> set hive.auto.convert.join=true; hive> set hive.auto.convert.join... 2020. 1. 6.
[DB] NL(Nested Loop)조인, 소트머지 조인(SMJ), Hash 조인 비교 - 랜덤 액세스 위주의 조인 - 한레코드씩 순차적으로 진행 - 테이블의 크기가 작을수록 좋음 - 온라인 프로그램에서 사용할 때 좋음 - Driving 테이블의 크기가 가장 많은 영향을 준다. - 조인하기전에 정렬 - 넓은 데이터 처리에 유리함 - 정렬에 필요한 데이터가 많아지면 메모리대신 디스크를 사용하므로 성능이 떨어질 수 있음 - 조인 조건의 인덱스 유무에 영향을 받지 않지만 Sort 가 필요하다. - 한쪽 테이블의 크기가 작을수록 좋음 - NL의 랜덤액세스, SMJ의 정렬작업에 대한 부담으로 등장 - 인덱스를 사용하지 않음, 인덱스 대신 Hash 함수를 사용 - 동등조인(=) 에서만 사용 - 수행 빈도가 높은 OLTP성 작업에서는 불리함 - 수행 빈도가 낮고, 쿼리 수행시간이 오래 걸리는, 대용량 .. 2017. 3. 28.