OpenLineage と統合する

OpenLineage は、データリネージ情報を収集して分析するためのオープン プラットフォームです。OpenLineage は、リネージデータに対してオープン標準を使用し、OpenLineage API を使用して実行、ジョブ、データセットを報告するデータ パイプライン コンポーネントからリネージ イベントを取得します。

Data Lineage API を使用して OpenLineage イベントをインポートし、BigQuery、Cloud Composer、Cloud Data Fusion、Dataproc などの Google Cloud サービスのリネージ情報とともに Dataplex UI に表示できます。

OpenLineage 仕様を使用する OpenLineage イベントをインポートするには、ProcessOpenLineageRunEvent REST API メソッドを使用して、OpenLineage ファセットを Data Lineage API 属性にマッピングします。

制限事項

  • Data Lineage API では、OpenLineage メジャー バージョン 1 と 2 がサポートされています。

  • Data Lineage API は、次の機能をサポートしていません。

    • メッセージ形式が変更された、以降の OpenLineage リリース
    • DatasetEvent
    • JobEvent
  • 1 つのメッセージの最大サイズは 5 MB です。

  • 入出力の各完全修飾名の長さは 4,000 文字に制限されています。

  • リンクは、100 個のリンクがあるイベント別にグループ化されます。リンクの最大数は 1,000 個です。

  • Dataplex は、ジョブの実行ごとにリネージグラフを表示し、リネージ イベントの入力と出力を表示します。Spark ステージのような下位レベルのプロセスはサポートされていません。

OpenLineage マッピング

REST API メソッド ProcessOpenLineageRunEvent では、次のように OpenLineage 属性を Data Lineage API 属性にマッピングします。

Data Lineage API 属性 OpenLineage 属性
Process.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Process.displayName Job.namespace + ":" + Job.name
Process.attributes Job.facets(保存データを参照)
Run.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID
Run.displayName Run.runId
Run.attributes Run.facets(保存データを参照)
Run.startTime eventTime
Run.endTime eventTime
Run.state eventType
LineageEvent.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID/lineageEvents/HASH_OF_JOB_RUN_INPUT_OUTPUTS_OF_EVENT(例: projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source 入力(fqn は名前空間と名前を連結したもの)
LineageEvent.EventLinks.targetS 出力(fqn は名前空間と名前を連結したもの)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId メソッド ユーザーによって定義されます。

OpenLineage イベントをインポートする

OpenLineage をまだ設定していない場合は、スタートガイドをご覧ください。

OpenLineage イベントを Dataplex にインポートするには、REST API のメソッド ProcessOpenLineageRunEvent を呼び出します。

POST https://datalineage.googleapis.com/v1/projects/{project}/locations/{location}:processOpenLineageRunEvent \
--data '{"eventTime":"2023-04-04T13:21:16.098Z","eventType":"COMPLETE","inputs":[{"name":"somename","namespace":"somenamespace"}],"job":{"name":"somename","namespace":"somenamespace"},"outputs":[{"name":"somename","namespace":"somenamespace"}],"producer":"someproducer","run":{"runId":"somerunid"},"schemaURL":"https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"}'

OpenLineage からの情報を分析する

インポートした OpenLineage イベントを分析するには、Dataplex UI でリネージグラフを表示するをご覧ください。

保存データ

Data Lineage API では、OpenLineage メッセージのすべてのファセット データが格納されるわけではありません。Data Lineage API は、次のファセット フィールドを格納します。

  • spark_version
    • openlineage-spark-version
    • spark-version
  • すべての spark.logicalPlan.*
  • environment-properties(カスタム Google Cloud リネージ ファセット)
    • origin.sourcetypeorigin.name
    • spark.app.id
    • spark.app.name
    • spark.batch.id
    • spark.batch.uuid
    • spark.cluster.name
    • spark.cluster.region
    • spark.job.id
    • spark.job.uuid
    • spark.project.id
    • spark.query.node.name
    • spark.session.id
    • spark.session.uuid

Data Lineage API には、次の情報が保存されます。

  • eventTime
  • run.runId
  • job.namespace
  • job.name