Dokumen ini menyediakan template referensi untuk membuat konektor kustom guna mengekstrak metadata dari sumber pihak ketiga, seperti MySQL, SQL Server, dan Oracle. Anda dapat menggunakan konektor ini untuk mengimpor metadata ke Knowledge Catalog (sebelumnya Dataplex Universal Catalog) melalui pipeline konektivitas terkelola. Contoh konektor Python untuk Oracle Database Express Edition (XE) disertakan sebagai titik awal. Anda juga dapat mengembangkan konektor menggunakan Java, Scala, atau R.
Cara kerja konektor
Konektor mengekstrak metadata dari sumber data pihak ketiga, mengubah
metadata ke format ImportItem Knowledge Catalog, dan membuat
file impor metadata yang dapat diimpor oleh Knowledge Catalog.
Konektor adalah bagian dari pipeline konektivitas terkelola. Pipeline konektivitas terkelola adalah alur kerja yang diorkestrasi yang Anda gunakan untuk mengimpor metadata Knowledge Catalog. Pipeline konektivitas terkelola menjalankan konektor dan melakukan tugas lain dalam alur kerja impor, seperti menjalankan tugas impor metadata dan mencatat log.
Pipeline konektivitas terkelola menjalankan konektor menggunakan tugas batch Managed Service untuk Apache Spark. Managed Service untuk Apache Spark menyediakan lingkungan eksekusi Spark serverless. Meskipun Anda dapat membuat konektor yang tidak menggunakan Spark, sebaiknya gunakan Spark karena dapat meningkatkan performa konektor Anda.
Persyaratan konektor
Konektor memiliki persyaratan berikut:
- Konektor harus berupa image Artifact Registry yang dapat dijalankan di Managed Service untuk Apache Spark.
- Konektor harus membuat file metadata dalam format yang dapat diimpor oleh tugas impor metadata Knowledge Catalog (metode API
metadataJobs.create). Untuk mengetahui persyaratan mendetail, lihat File impor metadata. Konektor harus menerima argumen command line berikut untuk menerima informasi dari pipeline:
Argumen command line Nilai yang diberikan oleh pipeline target_project_idPROJECT_ID target_location_idREGION target_entry_group_idENTRY_GROUP_ID output_bucketCLOUD_STORAGE_BUCKET_ID output_folderFOLDER_ID Konektor menggunakan argumen ini untuk membuat metadata dalam grup entri target
projects/PROJECT_ID/locations/REGION/entryGroups/ENTRY_GROUP_ID, dan untuk menulis ke bucket Cloud Storagegs://CLOUD_STORAGE_BUCKET_ID/FOLDER_ID. Setiap eksekusi pipeline akan membuat folder baru FOLDER_ID di bucket CLOUD_STORAGE_BUCKET_ID. Konektor harus menulis file impor metadata ke folder ini.
Template pipeline mendukung konektor PySpark. Template mengasumsikan bahwa driver
(mainPythonFileUri)
adalah file lokal pada image konektor bernama main.py. Anda dapat mengubah
template pipeline untuk skenario lain, seperti konektor Spark, URI driver
yang berbeda, atau opsi lainnya.
Berikut cara menggunakan PySpark untuk membuat item impor dalam file impor metadata.
"""PySpark schemas for the data."""
entry_source_schema = StructType([
StructField("display_name", StringType()),
StructField("source", StringType())])
aspect_schema = MapType(StringType(),
StructType([
StructField("aspect_type", StringType()),
StructField("data", StructType([
]))
])
)
entry_schema = StructType([
StructField("name", StringType()),
StructField("entry_type", StringType()),
StructField("fully_qualified_name", StringType()),
StructField("parent_entry", StringType()),
StructField("entry_source", entry_source_schema),
StructField("aspects", aspect_schema)
])
import_item_schema = StructType([
StructField("entry", entry_schema),
StructField("aspect_keys", ArrayType(StringType())),
StructField("update_mask", ArrayType(StringType()))
])
Sebelum memulai
Panduan ini mengasumsikan bahwa Anda sudah terbiasa dengan Python dan PySpark.
Tinjau informasi berikut:
- Konsep metadata Knowledge Catalog
- Dokumentasi tentang tugas impor metadata
Lakukan hal berikut. Buat semua resource di lokasi Google Cloud yang sama.
-
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Dataplex, Dataproc, Workflows, dan Artifact Registry API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable dataplex.googleapis.com
dataproc.googleapis.com workflows.googleapis.com artifactregistry.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Memberikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/resourcemanager.projectCreator, roles/billing.projectManager, roles/serviceusage.admin, roles/iam.serviceAccountCreator, roles/iam.securityAdmin, roles/storage.admin, roles/artifactregistry.writer, roles/dataplex.entryGroupOwner, roles/dataplex.entryOwner, roles/dataplex.aspectTypeOwnergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ganti kode berikut:
PROJECT_ID: Project ID Anda.USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya,myemail@example.com.ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.
-
Menyiapkan autentikasi:
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan nama untuk akun layanan. -
Memberikan peran IAM
roles/ownerke akun layanan.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama dari akun layanan.PROJECT_ID: project ID dimana Anda membuat akun layanan
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
-
Buat bucket Cloud Storage untuk menyimpan file impor metadata.
-
Buat resource metadata berikut dalam project yang sama.
Untuk nilai contoh, lihat bagian Contoh resource metadata untuk sumber Oracle dalam dokumen ini.
- Buat grup entri.
-
Buat jenis aspek kustom untuk entri yang ingin Anda impor. Gunakan konvensi penamaan
SOURCE-ENTITY_TO_IMPORT.Misalnya, untuk database Oracle, buat jenis aspek bernama
oracle-database.Secara opsional, Anda dapat membuat jenis aspek tambahan untuk menyimpan informasi lainnya.
-
Buat jenis entri kustom untuk resource yang ingin Anda impor, dan tetapkan jenis aspek yang relevan kepadanya. Gunakan konvensi penamaan
SOURCE-ENTITY_TO_IMPORT.Misalnya, untuk database Oracle, buat jenis entri bernama
oracle-database. Tautkan ke jenis aspek yang diberi namaoracle-database.
- Pastikan sumber pihak ketiga Anda dapat diakses dari project Google Cloud Anda. Untuk mengetahui informasi selengkapnya, lihat Konfigurasi jaringan Managed Service untuk Apache Spark.
Membuat konektor Python dasar
Contoh konektor Python dasar membuat entri tingkat teratas untuk sumber data Oracle menggunakan class library klien Knowledge Catalog. Kemudian, Anda memberikan nilai untuk kolom entri.
Konektor membuat file impor metadata dengan entri berikut:
- Entri
instance, dengan jenis entriprojects/PROJECT_ID/locations/LOCATION/entryTypes/oracle-instance. Entri ini mewakili sistem Oracle Database XE. - Entri
database, yang merepresentasikan database di dalam sistem Oracle Database XE.
Untuk membuat konektor Python dasar, lakukan hal berikut:
Buat clone repositori
cloud-dataplex.Siapkan lingkungan lokal. Sebaiknya gunakan lingkungan virtual.
mkdir venv python -m venv venv/ source venv/bin/activateGunakan versi Python aktif atau pemeliharaan. Python versi 3.7 dan yang lebih baru didukung.
Buat project Python.
Persyaratan penginstalan:
pip install -r requirements.txtPersyaratan berikut diinstal:
Tambahkan file pipeline
main.pydi root project.Saat men-deploy kode ke Managed Service untuk Apache Spark, file
main.pyberfungsi sebagai titik entri untuk eksekusi. Sebaiknya minimalkan jumlah informasi yang disimpan dalam filemain.py; gunakan file ini untuk memanggil fungsi dan class yang ditentukan dalam konektor Anda, seperti classsrc/bootstrap.py.Buat folder
srcuntuk menyimpan sebagian besar logika konektor Anda.Perbarui file
src/cmd_reader.pydengan class Python untuk menerima argumen command line. Anda dapat menggunakan modul argeparse untuk melakukannya.Di lingkungan produksi, sebaiknya Anda menyimpan sandi di Secret Manager.
Perbarui file
src/constants.pydengan kode untuk membuat konstanta.Perbarui file
src/name_builder.pydengan metode untuk membuat resource metadata yang Anda inginkan agar konektor dibuat untuk resource Oracle Anda. Gunakan konvensi yang dijelaskan di bagian Contoh resource metadata untuk sumber Oracle dalam dokumen ini.