gpload는 Greenplum의 병렬 로딩 유틸리티로, 대용량 데이터를 매우 빠르고 효율적으로 세그먼트들에 분산하여 적재할 수 있게 해줍니다.
YAML 형식의 제어 파일(control file)을 사용하여 로딩 작업을 정의하는 것이 특징입니다.
gpload 사용을 위한 3가지 구성 요소
데이터 파일: 로딩할 원본 데이터 (예: user_data.csv)
타겟 테이블: 데이터가 적재될 Greenplum 테이블
YAML 제어 파일: 로딩 작업의 모든 규칙을 정의하는 파일
- 데이터 파일 생성 (user_data.csv) 쉼표(,)로 구분된 간단한 CSV 파일을 준비합니다.
코드 스니펫
1,John Doe,john.doe@email.com
2,Jane Smith,jane.smith@email.com
3,Peter Jones,peter.jones@email.com
- Greenplum에 타겟 테이블 생성 데이터가 들어갈 테이블을 미리 만들어 둡니다.
SQL
DROP TABLE users;
CREATE TABLE users (
id INT,
name TEXT,
email TEXT
)
Distributed by (id);
로딩 작업을 정의하는 YAML 파일을 작성합니다. 이 파일이 gpload의 핵심입니다.
YAML
VERSION: 1.0.0.1
DATABASE: gpadmin
USER: gpadmin
HOST: mdw
PORT: 5432
GPLOAD:
INPUT:
- SOURCE:
LOCAL_HOSTNAME:
- localhost
PORT: 8081 # gpload가 내부적으로 사용하는 포트
FILE:
- /path/to/your/user_data.csv # 1단계에서 만든 데이터 파일의 전체 경로
- COLUMNS:
- id: int
- name: text
- email: text
- FORMAT: csv
- DELIMITER: ','
- QUOTE: '"'
- ERROR_LIMIT: 25
OUTPUT:
- TABLE: public.users
- MODE: insert # 데이터를 추가하는 모드
YAML 파일 주요 항목 설명:
DATABASE, USER, HOST, PORT: Greenplum 접속 정보
INPUT:
FILE: 로딩할 데이터 파일의 절대 경로를 지정합니다.
COLUMNS: 데이터 파일의 각 열이 테이블의 어떤 컬럼과 타입에 매핑되는지 정의합니다.
FORMAT: 데이터 파일의 형식 (csv 또는 text).
DELIMITER: 구분자 (CSV의 경우 ,).
OUTPUT:
TABLE: 데이터가 적재될 테이블 이름 (스키마명.테이블명).
MODE: 데이터 적재 방식.
insert: 데이터를 추가합니다.
update: 기존 데이터를 업데이트합니다. (MATCH_COLUMNS, UPDATE_COLUMNS 필요)
merge: 데이터가 있으면 업데이트, 없으면 추가합니다. (MATCH_COLUMNS, UPDATE_COLUMNS 필요)
이제 터미널에서 gpload 명령어를 -f 옵션과 함께 실행하여 로딩 작업을 시작합니다.
Bash
gpload -f load_users.yml
명령어를 실행하면 gpload가 제어 파일의 내용을 읽어 병렬 데이터 로딩을 수행합니다.
작업이 완료되면 로딩된 행 수와 처리 속도 등의 요약 정보가 출력됩니다.