Greenplum

Greenplum - Loading Data

n.han 2019. 12. 13. 12:13

- Loading Data

Loading Options.
INSERT / COPY (psql) / EXTERNAL TABLES & gpfdist protocol(GPDB) / GPLOAD (GPDB) 가 있다. INSERT와 COPY는 Master를 통해서 데이터들을 넣어준다. gpfdist / gpload는 ETL Host에서 넣을 파일을 웹서버스 형태로 띄우고, 각 Segment에서 필요한 데이터들을 ETL Host에 접속해서 해당 Segment에 분산된 데이터를 가지고 간다. 
COPY는 초당 십만건 정도, GPLOAD는 초당 몇십만건 정도의 데이터가 들어간다.

COPY.
COPY를 활용해서 데이터를 테이블에 넣으려면 COPY 넣을테이블이름 FROM '파일위치';
COPY를 활용해서 테이블의 데이터를 파일로 만드려면 COPY 'SELECT 쿼리' TO '파일위치';
다만 gpadmin 계정이면 Master에 파일이 생기고, 다른 계정은 아예 COPY TO가 되지 않는다. ETL Host에 파일을 생기게 하고 싶으면, \(역슬래쉬)를  COPY 앞에 붙여야 한다.

External tables.
gpfdist, gphdfs, pxf 등을 활용하여, ETL Host에 file을 External tables로 연결할 수 있다. External tables은 해당 테이블에 쿼리가 발생할 때 연결이 된다. 가령 SELECT * FROM external_tables1와 같은 쿼리를 실행하게 되면, 그때 연결된 데이터를 가지고 온다. script를 실행한 결과를 external table로 연결하여 확인할 수도 있다. 운영 상에 괘 유용한 기능으로 보인다. file, gpfdist, pxf 모두 file을 external table로 연결할 수 있는데, 그중 아무거나 쓰면 되나? file은 Segment 안에 파일이 있어야 가능하고, pxf는 아직 file을 external table로 연결이 되지 않을 것 같다고 한다.

gpfdist.
gpfdist는 Apache daemon을 띄워서, 파일을 연결할 수 있도록 한다. 예를 들어,
gpfdist -d /gplab/data -p 8080 >> gpfdist.log 2>&1 &
로 ETL Host에서 gpfdist를 띄우면 /gplab/data 폴더 아래에 있는 파일들을 external table로 연결할 수 있다.
그리고 DB에서 external table을 생성할 때,
LOCATION ('gpfdist://gpdb-sandbox:8080/파일 이름')
과 같이 만들면 된다.

gpload.
gpload는 gpfdist와 external table을 wrapping한 것이라고 보면 된다. yaml 파일을 통해서 어떻게 load하고 external table에 넣을지 설정하고, 실행한다.

 

'Greenplum' 카테고리의 다른 글

Greenplum - Backup and Recovery  (0) 2019.12.13
Greenplum - Data manipulations  (0) 2019.12.13
Greenplum - DDL  (0) 2019.12.13
Greenplum - Fundamental Concepts  (1) 2019.12.10