OpenLineage와 통합

OpenLineage는 데이터 계보 정보를 수집하고 분석하기 위한 개방형 플랫폼입니다. OpenLineage는 계보 데이터의 개방형 표준을 사용하여 OpenLineage API를 사용하여 실행, 작업, 데이터 세트를 보고하는 데이터 파이프라인 구성요소에서 계보 이벤트를 캡처합니다.

Data Lineage API를 통해 OpenLineage 이벤트를 가져와 BigQuery, Cloud Composer, Cloud Data Fusion, Dataproc과 같은 Google Cloud 서비스의 계보 정보와 함께 Dataplex 웹 인터페이스에 표시할 수 있습니다.

OpenLineage 사양을 사용하는 OpenLineage 이벤트를 가져오려면 ProcessOpenLineageRunEvent REST API 메서드를 사용하고 OpenLineage 패싯을 Data Lineage API 속성에 매핑합니다.

제한사항

  • Data Lineage API는 OpenLineage 주 버전 1 및 2를 지원합니다.

  • Data Lineage API는 다음을 지원하지 않습니다.

    • 메시지 형식이 변경된 모든 후속 OpenLineage 출시 버전
    • DatasetEvent
    • JobEvent
  • 단일 메시지의 최대 크기는 5MB입니다.

  • 입력 및 출력의 각 정규화된 이름 길이는 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 inputs(fqn은 네임스페이스 및 이름 연결)
LineageEvent.EventLinks.target outputs(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.sourcetype님 및 origin.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