융무의 기술블로그
article thumbnail
Published 2023. 4. 26. 00:01
embulk 코드 Data Engeneering/Data Ingestion

실무에 사용한 데이터 엔지니어링 스킬에 대한 정리내용입니다.

개인적인 기록을 위해 작성하였습니다.


Embulk

Embulk에 대한 자세한 내용은 링크를 참고해 주세요.

https://mjs1995.tistory.com/242

 

embulk & digdag

실무에 사용한 데이터 엔지니어링 스킬에 대한 정리내용입니다. 개인적인 기록을 위해 작성하였습니다. https://github.com/mjs1995/muse-data-engineer/blob/main/doc/Data%20Ingestion/embulk.md GitHub - mjs1995/muse-data-eng

mjs1995.tistory.com

  • 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 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
profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!