실무에 사용한 데이터 엔지니어링 스킬에 대한 정리내용입니다.
개인적인 기록을 위해 작성하였습니다.
Embulk
Embulk에 대한 자세한 내용은 링크를 참고해 주세요.
https://mjs1995.tistory.com/242
- embulk를 설치합니다.
# JRE 설치
sudo apt install default-jre
# embulk 최신버전 다운로드
curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
# embulk 실행 권한 추가
chmod +x ~/.embulk/bin/embulk
# PATH 에 embulk 등록
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
# 변경된 PATH에 적용
source ~/.bashrc
# 확인
embulk -version
- [WARN] Unrecognized Java version: openjdk full version "17.0.6+10-Debian-1deb11u1", Unrecognized VM option 'AggressiveOpts', Error: Could not create the Java Virtual Machine. 해당 에러가 발생하였습니다.
- Embulk가 Java 버전을 인식하지 못하여 발생하는 문제로 Java 가상 머신(VM) 옵션 중 인식하지 못하는 것으로, Java 9 이후 버전에서는 삭제되었습니다. 따라서 Java 9 이후 버전을 사용하면 해당 오류가 발생할 수 있습니다.
# 기본 JRE 설치
sudo apt install default-jre
# Embulk가 인식할 수 있는 Java 버전 선택
sudo update-alternatives --config java
# 3. Embulk 실행 스크립트 파일에 JAVA_OPTS 환경 변수 설정하여 AggressiveOpts 옵션 비활성화
echo 'export JAVA_OPTS="-XX:-UseAggressiveOpts"' >> ~/.bashrc
source ~/.bashrc
-
- Embulk가 잘 설치된 것을 확인할 수 있습니다.
- Embulk가 잘 설치된 것을 확인할 수 있습니다.
Embulk plug-in 설치
- https://plugins.embulk.org/
- 기본적인 embulk에 plugin을 설치해서 postgres, bigquery, mysql, hdfs, oracle, redshift, s3, dynamodb, elasticsearch 등등 다양한 저장소에서 데이터를 가져오고나 넣거나 할 수 있습니다
embulk gem list # 설치된 플러그인 리스트
embulk gem install embulk-input-mysql # MySQL
embulk gem install embulk-input-postgresql # PostgreSQL
embulk gem install embulk-output-bigquery # Bigquery
- embulk gem install embulk-output-gcs를 실행할 때 ERROR: Error installing embulk-output-bigquery:jwt requires Ruby version >= 2.5. 에러가 발생하여서 해결했습니다.
# Java 8 설치하기
sudo apt-get update
sudo apt-get install openjdk-8-jre-headless -y
# Embulk 설치하기
curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 필요한 플러그인 설치하기
embulk gem install embulk-input-gcs
embulk gem install embulk-output-gcs
Embulk Example
embulk example ./test # 샘플데이터 생성
embulk guess ~/test/seed.yml -o config.yml # 입력 플러그인, 출력 플러그인 및 필드 매핑 구성을 포함하는 config.yml 파일을 추측하며 생성
embulk preview config.yml # Embulk를 사용하여 config.yml 처리 결과를 미리보기
embulk run config.yml # # 실행
- embulk guess로 yaml 파일을 확인합니다.
Bigquery 설정
- BigQuery Admin : 기존에 없는 테이블을 생성하기 위한 권한으로 이하의 BigQuery Admin 권한을 갖게 되면, 기존의 테이블을 수정, 읽기, 쓰기는 가능하지만, 없는 테이블 생성에 대한 권한은 없습니다.
- Embulk 설정 시 service_account_email을 넣어줘야 합니다.
- 서비스 계정의 키를 넣어줍니다.
- gcs로 test 할 yaml파일을 만든 뒤에 embulk run을 실행해 줍니다.
in:
type: file
path_prefix: /home/{유저}/./test/csv/sample_
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: LF
type: csv
delimiter: ','
quote: '"'
escape: '"'
null_string: 'NULL'
trim_if_not_quoted: false
skip_header_lines: 1
allow_extra_columns: false
allow_optional_columns: false
columns:
- {name: id, type: long}
- {name: account, type: long}
- {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
- {name: purchase, type: timestamp, format: '%Y%m%d'}
- {name: comment, type: string}
out:
type: bigquery
mode: append
auth_method: json_key
json_keyfile: /home/{유저}/test/{프로젝트 키}.json
service_account_email: zoom-de-service-acct@{프로젝트}.iam.gserviceaccount.com
dataset: test_dataset
auto_create_table: true
table: embulk_table_%Y_%m
'Data Engeneering > Data Ingestion' 카테고리의 다른 글
embulk & digdag (1) | 2023.03.13 |
---|---|
CDC - 변경 데이터 캡처 (0) | 2023.03.09 |
이진로그 - binary log(binlog) (0) | 2023.03.07 |