oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - embulk
1)개요
Windows Server의 Oracle DB와 연결해서 Ubuntu 환경에서 embulk로 데이터를 읽어와 bigQuery로 이관하는 작업을 시작해보겠습니다.
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM : thewayitwas.tistory.com/432
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle : thewayitwas.tistory.com/433
2)embulk 특징
⇢ 데이터를 전송하는 오픈 소스 대량 데이터 로더 입니다. ETL에서 Transformation 외에 Extraction, Loading 에서 여러 plug-in을 제공하고 있습니다.
- Input file format을 자동으로 인식
- 병렬, 분산 수행 가능
- Transaction Control
- Resuming
- RubyGem 기반
3)embulk & plug-in 설치
$ sudo apt install default-jre
$ 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-oracle
$ embulk gem install embulk-output-bigquery
3)VM 권한 설정
service account를 생성해서 JSON으로 GOOGLE_CLOUD_CREDENTIAL 환경설정을 해도 되지만 roles/compute.admin 권한을 주게 되면 모든 Compute Engine 리소스를 관리할 수 있는 전체 권한을 부여받을 수 있습니다. IAM에 해당 계정 메일에다 compute.admin 계정을 주시면 됩니다.
4)yml 파일 구성
.yml 파일의 설정값을 구성할 때 ojdbc, p12_keyfile 등 GCS에 업로드 한 뒤 gsutil cp [bucket위치] [옮길 ubuntu 경로] 를 적어줘서 옮기면 됩니다.
$ touch config.yml
in:
type: oracle
driver_path: /home/gscloud94/ojdbc8.jar
host: 34.64.254.253
port : "1521"
user: h2
password: "1234"
database: XE
query : | SELECT * FROM hr.departments
out:
type: bigquery
mode: replace
auth_method : json_key
json_keyfile : [ json_keyfile 경로를 적어줍니다. ]
service_account_email : [bigQuery에 접근하기 위해 IAM>service account 에서 생성한 service_account 등록(단, bigQuery admin권한 설정이 완료된 상태)]
p12_keyfile: [위의 service_account_email key를 p12 형식으로 다운받아 경로를 기입해줍니다.]
project: [현재 수행중인 프로젝트 위치]
dataset: a_test
location : asia-northeast3
table: TEST_DB
auto_create_table: true
auto_create_dataset: true
ignore_unknown_values: true
allow_quoted_newlines: true
open_timeout_sec : 7200
send_timeout_sec : 7200
read_timeout_sec : 7200
$embulk run ora_bq_test.yml
5)bigQuery 적재
**오류
ORA-01882: timezone region not found
해결방법
- java -jar ojdbc8.jar configure -Doracle.jdbc.timezoneAsRegion=false 로 해결이 안된다면
- timedatectl 로 현재 timezone이 KST, UST인지 확인해봅니다. UST인 경우 sudo timedatectl set-timezone Asia/Seoul 로 KST로 변경하여 문제를 해결하였습니다.
oracle plug-in
github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-oracle
.yml file example
github.com/hiroyuki-sato/embulk-support/blob/master/input-jdbc_202-pg_test/conf.yml.liquid
'Cloud' 카테고리의 다른 글
Kibana - Elasticsearch 연동하면서 발생한 트러블 슈팅 (0) | 2021.05.06 |
---|---|
GCP 세미나 준비하면서 참고했던 URL 리스트 (0) | 2021.04.30 |
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle (0) | 2021.02.27 |
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성 (0) | 2021.02.25 |
마이크로서비스 배포 (0) | 2020.10.11 |
댓글
이 글 공유하기
다른 글
-
Kibana - Elasticsearch 연동하면서 발생한 트러블 슈팅
Kibana - Elasticsearch 연동하면서 발생한 트러블 슈팅
2021.05.06 -
GCP 세미나 준비하면서 참고했던 URL 리스트
GCP 세미나 준비하면서 참고했던 URL 리스트
2021.04.30 -
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle
2021.02.27 -
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성
2021.02.25