アドベントカレンダーを振り返ってみる | Luigi Advent Calendar 2016 #25
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。
このエントリは『Luigi Advent Calendar 2016』25日目の内容となります。
最終日なので、ここまでのアドベントカレンダーを振り返ってみたいと思います。
先日24日目はMySQLからRedshiftへLoadするタスクを作ってみた。その2(S3 → Redshift)でした。
まとめ
エントリーの一覧は、Luigi Advent Calendar 2016を御覧ください。
以下は、こぼれ話をちょこちょこと。
Luigiで実装されたタスクの読み方や考え方を把握することができた。
1人アドベントカレンダーをやらないかと言われ、題材を決めたが良い開始当初は全くと行っていいほどLuigiの思想も読み方もわかりませんでした。 つい先日、Luigiで実装されたタスクの挙動を確認するような場面があったのですがアドベントカレンダーのお陰で、 どういった処理が走ってその後どうなるのかと行った動きがわかるようになっていました。
Python力も並行で付いた
Luigiは確かにデータパイプラインのフレームワークですが、内部的はかなりベタなPythonで書いてある代物だなというのが私の認識です。 そのため必要なモジュールが無くても実装できるのが強みでもあり、弱みでもあるのかなと言う感じです。
月間で今まで書いたこともない本数を書き上げる事ができた
月間25本は自分の中でも一つの快挙だったなと思っています。ただこの快挙を達成するためには周りの協力も欠かせなかったと思います。 サイドストーリはいろいろとあるのですが、それはこっそり聞いて下さい。
どんな情報を参考にしたのか
まず、日本語のLuigiの情報はQiitaに乗っている情報がほぼほぼ全てかと思います。
Luigiに関する18件の投稿 - Qiita
特に以下の記事は非常に重宝しました。
Luigi によるワークフロー管理
あと、参考にできる情報としては、下記の公式ドキュメント
Getting Started — Luigi 2.4.0 documentation
それと、Luigiのソースコードは非常に有用でした。
spotify/luigi
LuigiのGithubのプルリクエスト見ていたところ、RedshiftのIAM Role対応が上がっておりました。
Add redshift copy support for role-based credential string by dlstadther · Pull Request #1962 · spotify/luigi
こういった内容も割りとすぐに読んで把握できるのはLuigiの強みだと思います。
当初書こうとしてかけなかった一覧
- DynamoDBへのアクセス(抽出)
- Windowsで動かしてみた
- Pythonのバージョン上げてみた
- クエリの結果を連携するタスクを作成してみた
DynamoDBに関してはLuigiのモジュールがあると思ったのですが、無かったのが原因。
Redshift DynamoDBは直接取り込めたりもするのでパイプライン処理に組み込ませるのは悪手なのかもと最近は思っています。
Windowsで動かしみた・Pythonのバージョンをあげてみた、に関しては余りハマることも無いのかなと思ったのと、
Luigiの特集と言うかPythonネタと判断したため取り上げませんでした。
クエリの結果連携についてはこれもLuigiというかPythonだなということで取り上げませんでした。
編集後記
十傑集の1人:しんやに、"梶原さん1人アドベントやりましょう"言われていたのを懐かしく思います。 言われた時は25本というとてつもない本数に無理と思っていましたが、なんとかやり遂げることができました。
また、このアドベントカレンダーの執筆をおこなっている最中にあったAWS re:Invent 2016 で発表されたAWS Batchに以下のような紹介がありました。
AWS Batch は、Pegasus WMS、Cromwell、Luigi といった市販およびオープンソースのワークフローエンジンやワークフロー言語と統合できるため、 使い慣れたワークフロー言語を使用して、バッチコンピューティングパイプラインをモデル化できます。 AWS Batch 製品の詳細
これに関しては驚くばかりでした。まだAWS Batch自体はプレビューでどのようにLuigiと組み合わせることができるのかは未知の部分でもありますが、 DI部として活躍させる場面がありそうでワクワクしていたりもします。