TrinoでOpenLineageを試してみる

OpenLineageはデータリネージの業界標準の仕様となることを目指しているプロジェクトで、JSONベースのリネージイベントスキーマ定義、JavaPython向けのリネージイベント構築用ライブラリ、Apache Airflow、Apache Spark、dbt用のインテグレーションなどを提供しています。また、別プロジェクトとしてMarquezというOpenLineageに対応したメタデータリポジトリの参照実装が開発されています(Marquezは元々WeWorkで開発されたものがOSS化されたもののようです)。

OpenLineageはAirflowやSparkのようなワークフロー/ETLツールから使うことが想定されているようですが、今回は学習を兼ねて普段仕事でも使っているTrinoへのOpenLineageのインテグレーションにトライしてみました。以下が成果物です。

github.com

このTrinoプラグインはクエリのinput/outputをOpenLineageのイベントとしてメタデータリポジトリに送信します。Marquezで動作確認をしています。1クエリ=1ジョブとして扱っているのですが、この辺はちょっとOpenLineageの概念とは合わないかもしれません。

f:id:takezoe:20211002203615p:plain

OpenLineageは仕様的には拡張性もあり、様々なユースケースに対応できそうな印象ですが、個人的にはMarquezのUIはちょっとシンプルすぎるというか、実際のユースケースでフロントエンドとして使うにはかなり機能不足な感じがしました。OpenLineageを使うのであればUIは自前で作り込む必要があるかもしれません。

また、OpenLineageが本当に業界標準になれるかどうかも現時点ではかなり謎な感じがしています。OpenLineageはデータリネージ関連のサービスを提供するDatakin社によって立ち上げられたようですが、普及するには幅広いエコシステムとコミュニティを構築することができるかどうかにかかっていそうです。