Dokumen ini menjelaskan cara mengintegrasikan OpenLineage dengan Knowledge Catalog (sebelumnya Dataplex Universal Catalog) untuk
mengimpor dan memvisualisasikan silsilah data dari sistem eksternal. Dengan bertindak sebagai konsumen OpenLineage
menggunakan REST API ProcessOpenLineageRunEvent, Knowledge Catalog memungkinkan Anda menyatukan silsilah pipeline kustom
bersama silsilah bawaan dari layanan Google Cloud .
Ringkasan
OpenLineage adalah platform terbuka untuk mengumpulkan dan menganalisis informasi silsilah data. Dengan menggunakan standar terbuka untuk data silsilah, OpenLineage menangkap peristiwa silsilah dari komponen pipeline data 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 Knowledge Catalog bersama informasi silsilah dari layananGoogle Cloud , seperti BigQuery, Managed Service untuk Apache Airflow, Cloud Data Fusion, dan Managed Service untuk Apache Spark.
Untuk mengimpor peristiwa OpenLineage yang menggunakan
spesifikasi OpenLineage,
gunakan
metode REST API
ProcessOpenLineageRunEvent, dan petakan faset OpenLineage ke atribut Data Lineage API.
Batasan integrasi OpenLineage
Versi yang didukung: Data Lineage API mendukung OpenLineage versi utama 1 dan 2.
Tindakan API: endpoint API Data Lineage
ProcessOpenLineageRunEventhanya bertindak sebagai konsumen pesan OpenLineage, bukan produsen. API ini memungkinkan Anda mengirim informasi silsilah yang dihasilkan oleh alat atau sistem yang mematuhi OpenLineage ke Knowledge Catalog. Beberapa layanan Google Cloud , seperti Managed Service untuk Apache Spark dan Managed Airflow, menyertakan produsen OpenLineage bawaan yang dapat mengirim peristiwa ke endpoint ini, sehingga mengotomatiskan pengambilan silsilah dari layanan tersebut.Fitur yang tidak didukung: Data Lineage API tidak mendukung hal berikut:
- Setiap rilis OpenLineage berikutnya dengan perubahan format pesan
DatasetEventJobEvent
Ukuran pesan: Ukuran maksimum satu pesan adalah 5 MB.
Panjang nama: Panjang setiap Nama yang Memenuhi Syarat dalam input dan output dibatasi hingga 4.000 karakter.
Silsilah tingkat kolom: Endpoint
ProcessOpenLineageRunEventmembuat edge silsilah tingkat tabel hanya untuk peristiwa OpenLineage kustom. Grafik silsilah level kolom hanya dibuat untuk transformasi SQL BigQuery dan tugas Managed Service untuk Apache Spark. Facet tingkat kolom kustom tidak dirender di konsol.Batas link: Link dikelompokkan menurut peristiwa, dengan maksimum 100 link per peristiwa. Jumlah agregat maksimum link tingkat tabel adalah 1.000. Untuk mesin otomatis yang didukung yang mengumpulkan silsilah tingkat kolom, jika pesan berisi lebih dari 1.500 link tingkat kolom, informasi tingkat kolom akan dilewati.
Cakupan grafik: Knowledge Catalog menampilkan grafik silsilah untuk setiap operasi tugas, yang menunjukkan input dan output peristiwa silsilah. Alat ini tidak mendukung proses tingkat rendah seperti tahap Spark.
Pemetaan atribut faset OpenLineage
Untuk mengetahui informasi tentang pemetaan OpenLineage, lihat Pemetaan OpenLineage.
Mengimpor peristiwa OpenLineage
Jika Anda belum menyiapkan OpenLineage, lihat Memulai.
Untuk mengimpor peristiwa OpenLineage ke Knowledge Catalog, panggil metode API
ProcessOpenLineageRunEvent.
C#
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai Data Lineage menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Data Lineage.
Untuk melakukan autentikasi ke Data Lineage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Data Lineage menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Data Lineage.
Untuk melakukan autentikasi ke Data Lineage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Data Lineage menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Data Lineage.
Untuk melakukan autentikasi ke Data Lineage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Data Lineage menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Data Lineage.
Untuk melakukan autentikasi ke Data Lineage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai Data Lineage menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Data Lineage.
Untuk melakukan autentikasi ke Data Lineage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Untuk mengimpor peristiwa OpenLineage, gunakan
metode processOpenLineageRunEvent.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID: Project ID Google Cloud Anda.LOCATION_ID: lokasi Google Cloud , sepertius-central1.
Metode HTTP dan URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
Meminta isi JSON:
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
Alat untuk mengirim pesan OpenLineage
Untuk menyederhanakan pengiriman peristiwa ke Data Lineage API, Anda dapat menggunakan berbagai alat dan library:
- Library klien Google Cloud untuk Data Lineage: Google menyediakan library klien untuk berinteraksi dengan Data Lineage API secara terprogram. Untuk petunjuk penginstalan, lihat Library klien.
- 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 Library java produsen untuk Silsilah Data kini bersifat open source. Library ini tersedia di GitHub dan Maven.
- Transportasi GCP OpenLineage: Untuk produsen OpenLineage berbasis Java, tersedia
GcpLineage Transport
khusus. Library ini menyederhanakan integrasi dengan Data Lineage API, dengan
meminimalkan kode yang diperlukan untuk mengirim peristiwa ke Data Lineage API.
GcpLineageTransportdapat 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 Melihat grafik silsilah di UI Knowledge Catalog.
Data faset OpenLineage yang disimpan
Data Lineage API tidak menyimpan semua data faset dari pesan OpenLineage. Data Lineage API menyimpan kolom faset berikut:
spark_versionopenlineage-spark-versionspark-version
- semua
spark.logicalPlan.* environment-properties(facet silsilah Google Cloud kustom)origin.sourcetypedanorigin.namespark.app.idspark.app.namespark.batch.idspark.batch.uuidspark.cluster.namespark.cluster.regionspark.job.idspark.job.uuidspark.project.idspark.query.node.namespark.session.idspark.session.uuid
Data Lineage API menyimpan informasi berikut:
eventTimerun.runIdjob.namespacejob.name
Langkah berikutnya
- Pelajari lebih lanjut integrasi silsilah data dengan Managed Service untuk Apache Spark dan silsilah data Hive.
- Coba di lab interaktif: Menangkap dan Mengeksplorasi Update Data dengan Silsilah Data dan OpenLineage