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.target 出力(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