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