Mengintegrasikan dengan OpenLineage

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

Melalui Data Lineage API, Anda dapat mengimpor peristiwa OpenLineage untuk ditampilkan di antarmuka web Dataplex Universal Catalog bersama informasi silsilah dari layananGoogle 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 aspek OpenLineage ke atribut Data Lineage API.

Batasan

  • Data Lineage API mendukung OpenLineage versi utama 1.

  • Endpoint Data Lineage API ProcessOpenLineageRunEvent hanya bertindak sebagai konsumen pesan OpenLineage, bukan produsen. API ini memungkinkan Anda mengirim informasi silsilah yang dihasilkan oleh alat atau sistem yang kompatibel dengan OpenLineage ke Dataplex Universal Catalog. Beberapa layanan Google Cloud , seperti Dataproc dan Cloud Composer, menyertakan produsen OpenLineage bawaan yang dapat mengirim peristiwa ke endpoint ini, sehingga mengotomatiskan pengambilan silsilah dari layanan tersebut.

  • Data Lineage API tidak mendukung hal berikut:

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

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

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

  • Dataplex Universal Catalog menampilkan grafik silsilah untuk setiap eksekusi tugas, yang menunjukkan input dan output peristiwa silsilah. Layanan ini tidak mendukung proses tingkat yang lebih 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 gabungan namespace dan nama)
LineageEvent.EventLinks.target output (fqn adalah gabungan namespace dan 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 Universal Catalog, 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"}'

Alat untuk mengirim pesan OpenLineage

Untuk menyederhanakan pengiriman peristiwa ke Data Lineage API, Anda dapat menggunakan berbagai alat dan library:

  • Library Produsen Java Google Cloud: Google menyediakan library Java open source untuk membantu membuat dan mengirim peristiwa OpenLineage ke Data Lineage API. Untuk mengetahui informasi selengkapnya, lihat postingan blog Producer java library for Data Lineage is now open source. Library ini tersedia di GitHub dan Maven.
  • Transportasi OpenLineage GCP: Untuk produsen OpenLineage berbasis Java, tersedia GcpLineage Transport khusus. Hal ini menyederhanakan integrasi dengan Data Lineage API, dengan meminimalkan kode yang diperlukan untuk mengirim peristiwa ke Data Lineage API. GcpLineageTransport dapat dikonfigurasi sebagai sink peristiwa untuk produsen OpenLineage yang ada seperti Airflow, Spark, dan Flink. Untuk mengetahui informasi dan contoh selengkapnya, lihat GcpLineage.

Menganalisis informasi dari OpenLineage

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

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 (aspek silsilah 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

Apa langkah selanjutnya?