-
데이터의 이동을 쉽게 해보자! Embulk 사용하기 (Test용 DB설치 포함, postgresql)Data Engineering 2021. 5. 21. 10:35반응형
Homebrew(홈브류) 설치 및 사용법, MacOS에서 프로그램을 쉽게 다운로드 및 삭제할 수 있는 패키지 관리자
설치전 사이트 참고 바랍니다.
postgresql은 Homebrew를 이용해서 설치를 진행합니다.
바로 테스트용
brew install postgresql initdb /usr/local/var/postgres pg_ctl -D /usr/local/var/postgres start createdb test1 # login db psql test1
Embulk란?
출처 : https://jungwoon.github.io/bigdata/2017/08/31/Embulk_Setup.html
다른 친절한 분이 올리신 4년전 글에 DB와 결과를 postgresql로 바꾸고 조금 수정해서 올렸습니다.
Embulk는 Sqoop과 거의 같은 기능을 하는 솔루션으로 여러 데이터 소스로 읽어와서 부어주는 기능을 하는 솔루션입니다.
Embulk 특징
- 플러그인 형태로 여러 데이터 소스를 이용할 수 있습니다(BigQuery, Oracle, MySQL, PostgreSQL, CSV, JSON…)
- 병렬로 로딩이 가능합니다.
- 스키마를 예측해서 해당 스키마가 없으면 알아서 만들어 줍니다.
Embulk 설치
설치 방법은 MacOS입니다.
MacOS외의 환경에서 설치방법 및 자세한 설명은
Embulk 에서 확인 가능합니다.
- 기본적으로 java jdk8 이상이 설치가 되어 있어야 합니다.
-로컬에서 설치방법
차례대로 쉘에 입력
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 -version
Embulk plug-in 설치
input으로 들어가서 output으로 나오는 설정을 하기 위해서는 플러그인을 설치해야 합니다.
설치 예시
embulk gem install [plug-in] # 필요한 플러그인은 [plug-in] 부분에 넣어서 설치를 합니다 embulk gem list # 설치할 수 있는 플러그-인 리스트를 확인합니다
설치해야할 플러그인 목록
embulk gem install jdbc embulk gem install embulk-input-jdbc embulk gem install embulk-output-jdbc embulk gem install embulk-input-postgresql embulk gem install embulk-output-postgresql
Embulk Example (CSV -> PostgreSQL)
Embulk는 기본적으로 예제를 지원합니다 예제로 생성되는 csv 파일로부터 데이터를 읽어와을 postgresql에 넣는 작업을 진행하겠습니다.
우선 다음 명령어로 Sample을 만듭니다.
$ embulk example --- 결과물 2017-08-31 09:32:03.449 +0900: Embulk v0.8.31 Creating embulk-example directory... Creating embulk-example/ Creating embulk-example/csv/ Creating embulk-example/csv/sample_01.csv.gz Creating embulk-example/seed.yml Run following subcommands to try embulk: 1. embulk guess embulk-example/seed.yml -o config.yml 2. embulk preview config.yml 3. embulk run config.yml
그럼 디렉토리에 embulk-example이 생성이 됩니다, 다음 명령어를 통해서 해당 디렉토리로 들어갑니다, 그럼 csv와 seed.yml이 생성되어 있는걸 확인할 수 있습니다.
cd embulk-example csv seed.yml
Embulk는 기본적으로 설정에 대한 부분은 yml파일에 명시를 해놓고 실행하는 식으로 되어 있습니다
기본적으로 생성이 되는 seed.yml을 열어보면 다음과 같습니다
- in: - 읽어들이는쪽의 설정 *주의! (플러그인에 따라 달라짐)
- out: - 로딩하는쪽의 설정 *주의! (플러그인에 따라 달라짐)
in: type: file # file 타입의 파일 여기서는 csv 파일 path_prefix: "/Users/jungwoon/embulk-example/csv/sample_" # csv 파일 경로 out: type: stdout # stdout은 그냥 화면 출력
yml이 만들어졌으면 embulk guess란 명령으로 해당 데이터에 대한 추론이 가능할뿐아니라 자동으로 설정까지 만들어 줍니다 일단 아래 명령어를 통해 seed.yml에 대해서 확인을 해봅니다.
embulk guess seed.yml
vim을 이용해서 config.yml을 알맞게 수정해줍니다.
vim config.yml
그럼 위와 같이 결과가 나옵니다. 이 추론을 이용해서 -o 옵션을 통해 설정 파일을 만듭니다
* guess를 사용하면 자동으로 설정파일을 생성해줍니다.
embulk guess seed.yml -o config.yml
그럼 config.yml이란 파일이 생성이 되면서 위에서 추론했던 결과가 그대로 들어가게 됩니다.
그럼 이제 out: 부분을 수정해서 postgresql에 들어가도록 config.yml을 수정합니다.
* 주의 path_prefix는 자동으로 내 로컬주소로 변경됨.
out 이후로만 수정하면 됩니다.
user와 password만 설정하시면 됩니다.
table은 자동으로 생성됩니다.
in: type: file path_prefix: /Users/joon09/embulk-example/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: string} # timestamp가 들어가면 에러가 나서 String으로 바꿔줌 - {name: comment, type: string} out: type: postgresql host: localhost port: 5432 user: dbuser password: "" database: test1 table: my_table1 mode: insert
설정이 끝났으면 embulk를 실행해주면 데이터가 이동됩니다.
embulk run config.yml
전송이 성공되면 이런식으로 뜹니다.
실제 dbeaver를 이용해서 로컬 db에 접속을 하면 입력이 완료된 것을 확인할 수 있습니다.
반응형'Data Engineering' 카테고리의 다른 글
Data 저장 및 운용 방식 용어 정리 (0) 2023.07.07 Digdag 설치하기 (workflow) (0) 2022.05.27 Workflow Engine Digdag 소개 및 Local 설치 (0) 2021.08.10