20 ポイント 投稿者 xguru 2020-11-23 | 2件のコメント | WhatsAppで共有

Nemo、Amundsen、DataHub などが必要な理由と、それらが提供する機能を整理

「なぜ DDP が必要なのですか? それは何をするものですか?」

→ 組織内で必要なデータがどこにあるのかを素早く検索し、それが何なのかを理解し、使い方を学べるよう支援するプラットフォーム

[ データを探すときによく出る質問 ]

→ 「_____」データはどこで見つけられますか? : どんな単語で検索すべきかすら分からないこともある。click、page view などの単語でテーブル名やカラム名を検索

→ このデータは何ですか? : このテーブルにはどんなカラムがありますか、どのようなデータ型ですか、この値は何を意味していますか?

→ 誰にアクセス権を依頼すればよいですか? : データのオーナーシップや権限情報も、メタデータの一部であるべき

→ このデータはどのように生成されましたか? 信頼できますか? : 誰が作り、どのような経路で生成されましたか? アナリストが毎月手作業で作ったものですか? 社内でどれくらい使われていますか? このデータの系譜は?

→ このデータはどう使えばよいですか? : どのカラムが関連していますか? どのテーブルと join すべきですか? データを整えるにはどのフィルタを使うべきですか? このテーブルを主に使っている人は誰ですか?(その人に聞けばよいので)どのカラムを主に使っていますか?

→ このデータはどれくらいの頻度で更新されますか? : たびたび遅延するなら、それはどのくらいの頻度で起きますか? データ期間はどれくらいですか? 数週間分しかないなら、機械学習には向いていないかもしれません。

[ データを見つけ、理解し、使うための機能 ]

  • データを検索、またはより賢い方法で見つける

→ 欲しいデータを見つける基本的な方法は、カラム名、テーブルやカラムの説明、ユーザーが入力した説明やコメントなどのメタデータを ElasticSearch で検索すること

→ 検索結果が多い場合は優先順位付けが必要。Lyft と Spotify では、テーブルがどれだけ多く使われているかで順位を決定。つまり、クエリログを解析してテーブル使用量を ElasticSearch のランキング情報として入れる。

→ Facebook の Nemo はこれをさらに拡張。検索語を spaCy で自然言語解析し、ソーシャルグラフ検索で使う Unicorn を用いた kNN ベースのスコアリングなどによってランキングを決定

→ 別の方法はレコメンド。組織やチーム内で最も多くアクセス・利用されているデータを推薦

  • スキーマ、プレビュー、統計、系譜(Lineage)によってデータを理解する

→ テーブルを理解するための基本情報はデータスキーマ : カラム名、データ型、説明(Description)

→ ユーザーに読み取り権限があれば、データのプレビュー(100 行程度)を提供可能

→ 事前計算されたカラム単位の統計も提供 : カラムごとの Row 数、Null の Row 数、最大/最小/平均/中央値/標準偏差、一意な Row 数、日付カラムならデータ全体の期間範囲

→ データ系譜を提供して前後の依存関係も確認 : ETL ジョブ(Airflow でスケジューリングされる)の場合、スケジュールや遅延有無などを確認できる。

  • 他のユーザーの利用形態を通じてデータの使い方を学ぶ

→ テーブルを見つけた後、どうすればそのテーブルの使い方を助けられるか? 簡単な方法は、そのテーブルに関連する人を見せること

→ データ所有者は権限を付与でき、よく使う人はデータの紹介や特徴を教えられる : Amundsen と DataHub は、テーブルに人をエンティティとして関連付けられる

→ ただし、そのデータに詳しい専門家だけに頼るとボトルネックになり得るため、追加のメタデータを結び付ける方がよりスケーラブルな方法

→ ユーザーが最も関連性の高いカラムを見つけられるよう、各列の利用統計を提供することも可能。

→ また、そのテーブルと join すべきテーブルを知るため、よく join されるテーブル一覧と join に使う列を提供すると便利。こうしたデータにはクエリログ解析が必要

→ データ利用に関するより詳しい情報を提供するには、そのテーブルに対する最近のクエリを提供でき、そこから実際にどのデータをフィルタしているかが分かる。

→ データ系譜(Lineage)も有用。現在のテーブルを使っているダウンストリームテーブルが分かり、それを生成するクエリも見せられる。これにより、テーブルが他のユースケースでどう使われているかを確認可能

→ こうして分かったダウンストリームテーブルが自分の目的と一致するなら、それを使うことで計算・保存コストを削減できるようになる。

→ Twitter の Data Access Layer、Uber の Databook、Netflix の Metacat などが Lineage をサポート

→ データを実際に使う前に、どれくらいの頻度で更新されるかも知りたい。データがどの時間単位(日/時など)でパーティションされているかを明示するのが役立つ。

→ DDP は Airflow のようなプラットフォームと連携して、スケジュールされた ETL ジョブを調査し、どれくらい時間がかかるかなどを見ることができる。

[ 各 DDP の上位比較 ]

→ すべて ElasticSearch または Solr ベースの free-text 検索をサポート。Amundsen と Lexikon はホームページでレコメンド機能を提供

→ すべて基本的なテーブル情報(スキーマ、説明)を表示。Amundsen と Databook はデータプレビューとカラム統計を提供

→ ほとんどのプラットフォームはデータ Lineage 機能を内蔵。Amundsen は現時点では未対応だが、2020 ロードマップに含まれている

→ 5 つのプラットフォームがオープンソースとして公開

[ オープンソース DDP の比較 ]

→ 2020 年 2 月に公開

→ 検索、テーブルスキーマ、オーナーシップ、系譜機能をサポート

→ Dataset、User、Group の 3 つのエンティティをサポート。Schemas/Jobs/Metrics/Dashboards などのエンティティも追加予定

→ Hive、Kafka、RDB メタデータをサポート(社内ではさらに多くをサポートしており、今後公開される可能性もある)

→ Expedia、TypeForm などが採用しており、MS、Morgan Stanley、Orange Telecom、ThoughtWorks なども POC 中

→ 2019 年 10 月に公開

→ 検索、レコメンド、プレビュー/カラム統計/所有者/主利用者が分かりやすく表現されたテーブル詳細ページをサポート。系譜機能はないが追加予定

→ Data Quality System との連携も提供予定(おそらく Great Expectations - https://greatexpectations.io/)

→ 優れたコミュニティがある : BigQuery/Redshift/Apache Atlas などとの連携を開発して貢献

→ 15 種類以上のデータソース(Redshift、Cassandra、Hive、Snowflake および各種 RDB)、Tableau、Redash、Mode Analytics ダッシュボード、Airflow などとの連携をサポート

→ ドキュメントもよく整備されており、Docker でローカルテスト可能

→ Asana、Instacart、iRobot、Square を含む 30 以上の組織が導入。

→ 2020 年 7 月に Linux AI 財団の新しいインキュベーションプロジェクトに参加。

→ 2018 年 6 月に公開

→ 検索、スキーマ表示、コストと容量を分析するメトリクスを含む。

→ テーブル/パーティション変更に関する通知機能がある。コストなどの問題で削除される際に通知を受け取れる。

→ Hive、Teradata、Redshift、S3、Cassandra、RDS との連携をサポート

→ スキーマ/メタデータのバージョニング/検証機能を作業中だと明らかにしている。

→ オープンソースではあるが、ドキュメントがまったくないため導入した会社はない。

→ 2018 年 10 月に公開

→ データ品質と系譜に注力

→ データガバナンス、Great Expectations を通じたデータ品質、データセットとジョブのカタログをサポート

→ WebUI および Airflow コンポーネント、Java/Python クライアントを提供

→ Docker でローカルテスト可能だが、ドキュメントは多くない

→ 2015 年 7 月に Data Governance Initiative の一部として開始

→ 2018 年 6 月に 1.0 が公開され、現在は 2.1

→ 主目的はデータガバナンスであり、組織がセキュリティ/コンプライアンス要件を満たせるよう支援すること。

→ リソースへのタグ付け、ダウンストリームデータセットへのタグ伝播、メタデータアクセスに対するセキュリティなど豊富な機能を備えている

→ メタデータ変更通知機能も可能

→ free-text 検索、スキーマ詳細表示、データ系譜をサポート

→ 高度な検索機能として、SQL に似た構文で検索することもサポート

→ HBase、Hive、Kaflka などのメタデータソースとの連携をサポート

→ メタデータを REST API で作成/修正することも可能

→ ドキュメントもよく整備されている

  • ING が Atlas と Amundsen を併用導入した事例は興味深い https://medium.com/wbaa/…

  • 完全な DDP ではないが、オープンソースの Whale はデータウェアハウスの内容を Markdown でインデックスする超シンプルな DDP ツールで、検索、修正、バージョニングなどをサポート

→ 開発者向け DDP ツールとして見てみる価値がある。 https://github.com/dataframehq/whale

  • 機械学習ほど派手ではないが、データディスカバリーはデータサイエンスのワークフローにおける重要な最初のステップ

2件のコメント

 
toughrogrammer 2020-11-23

おお、本当に良いまとめですね。Amundsen を一度使ってみようと思います。

 
xguru 2020-11-23

Nemo - Facebookのデータディスカバリープラットフォーム https://ja.news.hada.io/topic?id=3024

国内ではあまり見られないDDP構築事例