COGROUP
- COGROUP 은 GROUP과 같은 역할을 하지만, 차이점은 GROUP 하나의 릴레이션에 그룹화를 하지만, COGROUP은 두 개 이상의 릴레이션에 그룹화를 지정할 수 있다는 것이다.
- sample_data 수정 후 저장
- sample_data2 수정 후 저장
- A와 B 릴레이션에 데이터 속성 이름과 데이터 타입을 저장
- X 릴레이션에 COGROUP BY 구문을 이용하여 A 릴레이션의 owner 속성과 B 릴레이션의 friend2 속성을 그룹화 후 출력
A = LOAD 'sample_data' AS (owner:chararray,pet:chararray);
B = LOAD 'sample_data2' AS (friend1:chararray,friend2:chararray);
X = COGROUP A BY owner, B BY friend2;
Dump X;
- Alice는 모두 묶였음을 볼 수 있음
Join
- Sellf, Inner, Outer Join을 지원함
- sample_data 수정
- sample_data2 수정
self join
- Self Join은 릴레이션이 서로 관계 있는 것처럼 수행하여 자기 자신의 릴레이션과 조인을 수행한다.
- 같은 릴레이션이 필요하기 때문에 A와 A2 릴레이션을 생성하여 samplt_data 데이터의 속성명과 데이터 형태를 저장
- JOIN BY 구문을 이용하여 A 릴레이션의 id 속성과 A2 릴레이션의 id 속성을 self join
A = LOAD 'sample_data' USING PigStorage(',') as (id:int, name:chararray, age:int, address:chararray, salary:int);
A2 = LOAD 'sample_data' USING PigStorage(',') as (id:int, name:chararray, age:int, address:chararray, salary:int);
selfjoin = JOIN A BY id, A2 BY id;
DUMP selfjoin;
inner join
- B 릴레이션에 sample_data2 데이터의 콤마를 기준으로 데이터를 불러와 저장
- JOIN BY 구문을 통해 A 릴레이션의 id 속성과 B 릴레이션의 customer_id 속성을 Inner Join 수행 후 innerjoin 릴레이션에 저장하고, 출력
B = LOAD 'sample_data2' USING PigStorage(',') as (oid:int, date:chararray, customer_id:int, amount:int);
innerjoin = JOIN A BY id, B BY customer_id;
DUMP innerjoin;
- A 릴레이션의 id 속성과 B 릴레이션의 customer_id 속성 중 동일한 값을 찾아 출력되는 릴레이션의 첫 번째 속성으로 지정
Outer Join
- 한 쪽에는 데이터가 있고, 한쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 릴레이션의 내용을 모두 출력함
- 조인하는 기준에 따라 Left, Right, FUll Join으로 나뉨
- JOIN BY ~ LEFT OUTER 구문을 통해 leftouterjoin 릴레이션에 저장
leftouterjoin = JOIN A BY id LEFT OUTER, B BY customer_id;
DUMP leftouterjoin;
- 조인문의 왼쪽에 있는 A 릴레이션의 몯느 결과를 가져온 후 오른쪽 B 릴레이션의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시
Right Outer Join
- JOIN BY ~ RIGHT OUTER 구문을 통해 B 릴레이션의 customer_id 속성 기준으로 A 릴레이션의 id 속성을 Right Outer Join 수행 후 rightouterjoin 릴레이션에 저장하고, 출력
rightouterjoin = JOIN A BY id RIGHT OUTER, B BY customer_id;
DUMP rightouterjoin;
- 조인문의 오른쪽에 있는 B 릴레이션의 모든 결과를 가져온 후 오른쪽 A 릴레이션의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시
Full Outer Join
- JOIN BY ~ FULL OUTER 구문을 통해 A 릴레이션의 id 속성과 B 릴레이션의 customer_id 속성을 Full Outer Join 수행 후 fullouterjoin 릴레이션에 저장하고, 출력
fullouterjoin = JOIN A BY id FULL OUTER, B BY customer_id;
DUMP fullouterjoin;
- 조인문의 왼쪽에 있는 A 릴레이션의 모든 결과를 가져 온 후 오른쪽 B 릴레이션의 모든 결과를 가져와 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시
'빅데이터 관리 > Hadoop' 카테고리의 다른 글
PIG 기본 명령어 - 5 (1) | 2023.05.16 |
---|---|
PIG 기본명령어 - 4 (0) | 2023.05.16 |
PIG 기본 명령어 - 2 (0) | 2023.05.15 |
PIG 기본 명령어 - 1 (0) | 2023.05.15 |
FLUME - Tomcat 연결해보기 (0) | 2023.05.11 |