본문 바로가기

오픈소스/pig

Pig - UPSERT (UPDATE or INSERT)

Pig는 맵리듀스 작업을 Pig Latin이라는 언어를 통해서 보다 손쉬운 MapReduce 작업을 가능하게 하는 스크립트 언어이다. 최근 이와 관련된 프로젝트를 수행하고 있어 기존의 SQL 혹은 HQL(Hive QL)으로 작성된 코드를 Pig 스크립트로 변환하는 작업을 하고 있다. 참고가 될 만한 사항들을 정리하고 있습니다.

[ UPSERT ]

동작 : 대상 테이블에 킷값이 존재하면 UPDATE 그렇지 않으면 INSERT 수행

-- upsert.pig

A = load 'source/1.csv' using PigStorage(',')
 as (uid:chararray, name:chararray);
B = load 'source/2.csv' using PigStorage(',')
 as (uid:chararray, name:chararray);
C = cogroup A by uid, B by uid;
D = foreach C generate ( IsEmpty(B) ? A : B );
E = foreach D generate flatten(A);
F = order E by uid;
dump F

source/1.csv

1,ONE
2,TWO
3,THROO
4,FOO
5,FIVE

source/2.csv

4,FOUR
5,FIVE
6,SIX
7,SEVEN
8,EIGHT
9,NINE

'오픈소스 > pig' 카테고리의 다른 글

PIG - Exceeded max jobconf size  (0) 2013.06.19
Pig - COGROUP  (0) 2012.11.28
Pig - ROW_NUMBER (RANK)  (0) 2012.11.06