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