日々地道に成長

思いついたことを書いていきます。

【Digdag Embulk】Digdag+Embulkを使用した処理方法【基礎】

お疲れ様です。コーヒーです。

 

今回はDigdag+Embulkを使用した、処理を行う具体例について解説していきます!

DigdagとEmbulkそれぞれについて、解説している記事もあるので合わせて読んでいただけると理解が深まると思います。

stady-diary.hatenablog.com

stady-diary.hatenablog.com

 

Digdag+Embulkを使用した処理の具体的な流れ

今回は以下の流れで処理を行っていきます。

  1. BigQueryからcsvファイルを出力(Embulk使用)
  2. 出力したファイルをS3に転送(s3コマンド)

上記のようにシンプルな流れで処理をおこないます。

全体的なプログラムを先に見せると以下のような感じになります。

timezone: 'Asia/Tokyo'

+main:
#BQからEmbulkでcsvファイルを出力
  +BQ_output_csv:
    sh>: embulk run example.yml.liquid

#出力したファイルをS3に転送
  +s3_transfer:
    sh>: /usr/bin/aws s3 cp /data/save/ s3://s3_bucket_name/xxx/

BigQueryからcsvファイルを出力(Embulk使用)

下記の部分にてEmbulkでexample.yml.liquidを実行してcsvファイルを出力しています。

#BQからEmbulkでcsvファイルを出力
  +BQ_output_csv:
    sh>: embulk run example.yml.liquid

ここで、example.yml.liquidの中身を見ていきます。

in:
  type: bigquery
  keyfile: xxx.json
  project: project_name
  location: asia-northeast1
  sql: |
    select
        *
    from
        xxx.xxx
out:
  type: file
  file_ext: csv
  path_prefix: /data/save/test.
  sequence_format: ''
  formatter:
    type: csv
    charset: Shift_JIS
    header_line : true
    newline: CRLF
    quote_policy: NONE

inではBigQueryの設定をおこなっています。

プラグインは[embulk-input-bigquery]を使用しています。

github.com

こちらのインストール方法は簡単で以下のコマンドを打ち込むだけです!

embulk gem install embulk-input-bigquery

各種設定はそれぞれの環境に合わせて書き直してください。

ただ、locationはデフォルトでは[US or EU]になっているので注意してください。

今回はsqlはxxxテーブルから全件抜き出すものになっていますが、こちらもsqlを張り付ければどんなものにも対応しています。

 

outでは自身のローカル環境への出力設定を行っています。

path_prefixに保存したい場所のURLを指定できます。

その他細かい設定等はそれぞれの状況に合わせてください。

出力したファイルをS3に転送(s3コマンド)

 以下の部分でローカル環境からs3にファイルコピーしています。

#出力したファイルをS3に転送
  +s3_transfer:
    sh>: /usr/bin/aws s3 cp /data/save/ s3://s3_bucket_name/xxx/

「sh>」オペレーターを使用して、S3コマンドを呼び出していました。

「sh>」オペレーターは、シェルスクリプトを実行してくれます。

S3コマンドについては以下を参照してください。

docs.aws.amazon.com

 

以上で今回の解説は終了です!

実はembulkから直接s3に送ることもできたりと、プラグインをいろいろと調べると便利なものがいっぱいあります。

それでは!