[HADOOP] 해시에 성능 저하는 TEZ에 돼지 조인
HADOOP해시에 성능 저하는 TEZ에 돼지 조인
나는 함께 결합해야하는 여러 데이터 소스에서 레코드의 수백만의 수백을 변환하는 돼지 일련의 스크립트가 있습니다. 각 스크립트의 끝으로, 나는 성능 가입 점은 대단히 느린됩니다 도달한다. TEZ보기에서 DAG 보면, 나는 그것이 상대적으로 적은 작업 (일반적으로 100 ~ 200)로 분할되는 것을 볼 수 있지만, 각 작업을 완료하는 데 여러 시간이 소요됩니다. 작업 설명은이 HASH_JOIN을하고 있다고 보여줍니다.
TEZ 실행 엔진에서 실행 흥미롭게도, 나는 단지이 병목 현상으로 실행합니다. 맵리 듀스에, 아직 시간이 걸릴 수 있습니다,하지만 난 TEZ에 얻을 고민 기어처럼 아무것도. 내가 여기에 또 다른 질문을했습니다하는 맵리 듀스에 문제가 그러나, 맵리 듀스에서 실행되는 문제입니다.
여기에 내 코드의 샘플입니다 (사과, 나는 매우 일반적인 코드 인터 웹에 게시 할 수 있도록했습니다했습니다). 나는이 병목 현상을 제거하기 위해 무엇을 할 수 있는지 궁금하네요 - 병렬 도움을 지정하는 것? 나의 접근 방식에 문제가 있습니까?
-- Incoming data:
-- A: hundreds of millions of rows, 19 fields
-- B: hundreds of millions of rows, 3 fields
-- C: hundreds of millions of rows, 5 fields
-- D: a few thousand rows, 5 fields
J = -- This reduces the size of A, but still probably in the hundreds of millions
FILTER A
BY qualifying == 1;
K = -- This is a one-to-one join that doesn't explode the number of rows in J
JOIN J BY Id
, B BY Id;
L =
FOREACH K
GENERATE J1 AS L1
, J2 AS L2
, J3 AS L3
, J4 AS L4
, J5 AS L5
, J6 AS L6
, J7 AS L7
, J8 AS L8
, B1 AS L9
, B2 AS L10
;
M = -- Reduces the size of C to around one hundred million rows
FILTER C
BY Code matches 'Code-.+';
M_WithYear =
FOREACH M
GENERATE *
, (int)REGEX_EXTRACT(Code, 'Code-.+-([0-9]+)', 1) AS year:int
;
SPLIT M_WithYear
INTO M_annual IF year <= (int)'$currentYear' -- roughly 75% of the data from M
, M_lifetime IF Code == 'Code-Lifetime'; -- roughly 25% of the data from M
-- Transformations for M_annual
N =
JOIN M_WithYear BY Id, D BY Id USING 'replicated';
O = -- This is where performance falls apart
JOIN N BY (Id, year, M7) -- M7 matches L7
, L BY (Id, year, L7);
P =
FOREACH O
GENERATE N1 AS P1
, N2 AS P2
, N3 AS P3
, N4 AS P4
, N5 AS P5
, N6 AS P6
, N7 AS P7
, N8 AS P8
, N9 AS P9
, L1 AS P10
, L2 AS P11
;
-- Transformations N-P above repeated for M_lifetime
해결법
from https://stackoverflow.com/questions/50139192/poor-performance-on-hash-joins-with-pig-on-tez by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 스트리밍을 촉발 할 특정 파일을 선택 (0) | 2019.09.23 |
---|---|
[HADOOP] 우분투에서 START-DFS.SH을 실행하는 동안 권한이 거부 (0) | 2019.09.23 |
[HADOOP] 아파치 하둡 일반적인 실패 하둡을 설치하는 동안 (0) | 2019.09.23 |
[HADOOP] 어떻게 하이브 테이블에 여러 줄의 열 데이터를로드? 새 라인 문자를 가진 열 (0) | 2019.09.23 |
[HADOOP] 돼지의 현재 타임 스탬프를 얻는 방법 (0) | 2019.09.23 |