Mengintegrasikan dengan OpenLineage

OpenLineage adalah platform terbuka untuk mengumpulkan dan menganalisis informasi silsilah data. Dengan menggunakan standar terbuka untuk data lineage, OpenLineage merekam peristiwa lineage dari komponen data pipeline yang menggunakan OpenLineage API untuk melaporkan operasi, tugas, dan set data.

Melalui Data Lineage API, Anda dapat mengimpor peristiwa OpenLineage untuk ditampilkan di antarmuka web Dataplex bersama informasi lineage dari layanan Google Cloud, seperti BigQuery, Cloud Composer, Cloud Data Fusion, dan Dataproc.

Untuk mengimpor peristiwa OpenLineage yang menggunakan spesifikasi OpenLineage, gunakan metode REST API ProcessOpenLineageRunEvent, dan petakan facet OpenLineage ke atribut Data Lineage API.

Batasan

  • Data Lineage API mendukung versi utama OpenLineage 1 dan 2.

  • Data Lineage API tidak mendukung hal berikut:

    • Setiap rilis OpenLineage berikutnya dengan perubahan format pesan
    • DatasetEvent
    • JobEvent
  • Ukuran maksimum satu pesan adalah 5 MB.

  • Panjang setiap Nama yang Memenuhi Syarat Penuh dalam input dan output dibatasi hingga 4.000 karakter.

  • Link dikelompokkan berdasarkan peristiwa dengan 100 link. Jumlah agregat maksimum link adalah 1.000.

  • Dataplex menampilkan grafik silsilah untuk setiap tugas yang dijalankan, yang menampilkan input dan output peristiwa silsilah. Spark tidak mendukung proses tingkat rendah seperti tahap Spark.

Pemetaan OpenLineage

Metode REST API ProcessOpenLineageRunEvent memetakan atribut OpenLineage ke atribut Data Lineage API sebagai berikut:

Atribut Data Lineage API Atribut OpenLineage
Process.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Process.displayName Job.namespace + ":" + Job.name
Process.attributes Job.facets (lihat Data tersimpan)
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 (lihat Data tersimpan)
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 (misalnya, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source input (fqn adalah penggabungan namespace dan nama)
LineageEvent.EventLinks.target output (fqn adalah namespace dan penyambungan nama)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Ditentukan oleh pengguna metode

Mengimpor peristiwa OpenLineage

Jika Anda belum menyiapkan OpenLineage, lihat Memulai.

Untuk mengimpor peristiwa OpenLineage ke Dataplex, panggil metode 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"}'

Menganalisis informasi dari OpenLineage

Untuk menganalisis peristiwa OpenLineage yang diimpor, lihat Melihat grafik silsilah di UI Dataplex.

Data tersimpan

Data Lineage API tidak menyimpan semua data aspek dari pesan OpenLineage. Data Lineage API menyimpan kolom aspek berikut:

  • spark_version
    • openlineage-spark-version
    • spark-version
  • semua spark.logicalPlan.*
  • environment-properties (facet garis keturunan Google Cloud kustom)
    • origin.sourcetype dan 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 menyimpan informasi berikut:

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