與 OpenLineage 整合

OpenLineage 是用於收集及分析資料沿革資訊的開放式平台。OpenLineage 採用資料沿革資料的開放標準,從使用 OpenLineage API 回報執行作業、工作和資料集的資料管道元件中擷取沿革事件。

您可以透過 Data Lineage API 匯入 OpenLineage 事件,並在 Dataplex 通用目錄網頁介面中顯示,同時顯示來自Google Cloud 服務的歷程資訊,例如 BigQuery、Cloud Composer、Cloud Data Fusion 和 Dataproc。

如要匯入使用 OpenLineage 規格的 OpenLineage 事件,請使用 ProcessOpenLineageRunEvent REST API 方法,並將 OpenLineage 切面對應至 Data Lineage API 屬性。

限制

  • Data Lineage API 支援 OpenLineage 主要版本 1 和 2。

  • Data Lineage API 不支援下列項目:

    • 任何後續的 OpenLineage 版本,只要訊息格式有變更
    • DatasetEvent
    • JobEvent
  • 單一訊息的大小上限為 5 MB。

  • 輸入和輸出內容中每個完全合格名稱的長度上限為 4000 個半形字元。

  • 連結會按 100 個連結的事件分組。連結的總數上限為 1000。

  • 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 lineage 切面)
    • 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