たそらぼ

日頃思ったこととかメモとか。

digdag + embulk + pythonの環境構築

digdag + embulk + pythonの環境構築を行う方法です。

環境

VirtualBox:5.2.22
Ubuntu:18.4.1

digdagとembulk

digdagはワークフローエンジン。シェルやpythonなどの実行をyamlで記述し、スケジュール実施できる。

▼digdag公式

     ※ロゴは公式から引用
www.digdag.io


embulkはバルクのデータローダー。fluentdのバッチ版のように言われることが多いが、プラグインが多数展開&自作も可能なため、データベース/ストレージ、オンプレ/クラウドサービス、圧縮形式、ログフォーマットなどで、多岐にわたる対象に対して実施できる。

▼embulk公式

     ※ロゴは公式から引用
www.embulk.org


embulk自身にはスケジュール実行機能がないため、cronなどのスケジューラーと共に構成を組む必要がある。
共にトレジャーデータのOSSなので、embulkをdigdagのセットで構成することが多い。

構築手順

OpenJDK

インストールがまだの場合はインストールしておく。

sudo apt-get install java-1.8.0-openjdk

digdag

 curl -o ~/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
 chmod +x ~/bin/digdag
 echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

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

python

digdagはPythonスクリプトの呼び出しが可能だ。
docs.digdag.io

#Python2系
sudo apt-get python

#Python3系
sudo apt-get python3

デフォルトだとpython2の呼び出しになってしまう。

The python defaults to python. If an alternate python and options are desired, use the python option.

特定のPythonを使用したい場合は、python オプションか_export セクションで指定する。

_export:
py:
python: /opt/conda/bin/python

digdag + embulk + pythonのメリット

embulkで処理したデータの転送先を動的に変えたいことがある。例えばAWS Athenaでパーティションを作成してS3をクエリしたいときに、S3へ動的に保存することは現状のプラグインだとむつかしい(Big QueryはBig Queryのストレージに直接保存で可能みたい)。
動的に設定を変える際にはembulkで参照するyamlをliquidテンプレートエンジンで動的に変えることになるが、外部から値を流し込むには環境変数を参照することになる。digdagを使うと_export セクションを使い、yaml内で環境変数の設定ができるため、シェルで設定するよりもある程度管理がしやすい。また、pythonから値を取得できるので、ディレクトリの情報などを柔軟に取得することができる。