Dataplex mendukung penjadwalan eksekusi kode kustom, baik sebagai eksekusi satu kali, pada jadwal reguler, atau on demand. On demand berada dalam Pratinjau dan hanya tersedia melalui API. Anda dapat menjadwalkan transformasi data pelanggan menggunakan Spark (Java), PySpark (terbatas untuk Spark versi 3.2), atau Spark SQL. Dataplex menjalankan kode menggunakan pemrosesan Spark serverless dan penjadwal serverless bawaan.
Terminologi
- Tugas
- Tugas Dataplex mewakili pekerjaan yang ingin Anda lakukan dengan Dataplex sesuai jadwal. Fungsi ini mengenkapsulasi kode, parameter, dan jadwal Anda.
- Tugas
Tugas mewakili satu operasi tugas Dataplex. Misalnya, jika tugas dijadwalkan untuk berjalan setiap hari, Dataplex akan membuat tugas setiap hari.
Untuk tugas yang dibuat pada atau setelah 10 Mei 2023, kolom Pemicu menampilkan jenis pemicu eksekusi tugas.
Berikut adalah jenis pemicu eksekusi tugas:
RUN_REQUEST: Menunjukkan bahwa tugas dieksekusi karena memanggil
RunTask
API.TASK_CONFIG: Menunjukkan bahwa tugas dieksekusi karena konfigurasi tugas
TriggerSpec
.
Mode penjadwalan
Dataplex mendukung mode penjadwalan berikut:
- Jalankan sekali
- Gunakan mode ini untuk menjalankan tugas Anda sekali saja. Anda dapat memilih untuk menjalankannya segera atau pada waktu yang ditetapkan di masa mendatang. Jika Anda langsung menjalankan tugas, mungkin masih perlu waktu hingga dua menit untuk memulai eksekusi.
- Jalankan sesuai jadwal
- Gunakan mode ini untuk menjalankan tugas pada frekuensi berulang. Pengulangan yang didukung adalah harian, mingguan, bulanan, atau kustom.
- Menjalankan on-demand
Gunakan mode ini untuk menjalankan tugas yang dibuat sebelumnya sesuai permintaan. Mode jalankan sesuai permintaan hanya didukung oleh
RunTask
API. Saat tugas Anda berjalan sesuai permintaan, Dataplex akan menggunakan parameter yang ada untuk membuat tugas. Anda dapat menentukan argumenExecutionSpec
dan label untuk menjalankan tugas.
Sebelum memulai
Mengaktifkan Dataproc API.
Aktifkan Akses Google Pribadi untuk jaringan dan subjaringan Anda. Aktifkan Akses Google Pribadi di jaringan yang Anda gunakan dengan tugas Dataplex. Jika Anda tidak menentukan jaringan atau subnetwork saat membuat tugas Dataplex, Dataplex akan menggunakan subnetwork default, dan Anda harus mengaktifkan Akses Google Pribadi untuk subnetwork default.
Membuat suatu akun layanan. Akun layanan diperlukan untuk menjadwalkan tugas Dataplex. Akun layanan harus merupakan bagian dari project tempat Anda menjalankan tugas. Akun layanan harus memiliki izin berikut:
Akses ke data BigQuery dan Cloud Storage yang sedang diproses.
Izin Peran Pekerja Dataproc di project tempat Anda menjalankan tugas.
Jika tugas perlu membaca atau memperbarui instance Dataproc Metastore yang dilampirkan ke lake, akun layanan memerlukan peran Dataproc Metastore Viewer atau Editor. Peran ini harus diberikan di project tempat danau Dataplex disiapkan.
Jika tugasnya adalah tugas Spark SQL, Anda harus memberikan peran Developer Dataplex ke akun layanan. Peran ini harus diberikan di project tempat data lake Dataplex disiapkan.
Jika tugasnya adalah tugas Spark SQL, Anda memerlukan izin administrator Cloud Storage di bucket tempat hasil ditulis.
Untuk menjadwalkan dan menjalankan Spark SQL dan tugas Spark kustom, Anda harus diberi peran IAM Dataplex Metadata Reader (
roles/dataplex.metadataReader
), Dataplex Viewer (roles/dataplex.viewer
), dan Dataproc Metastore Metadata User (roles/metastore.metadataUser
) di akun layanan Anda.
Berikan peran Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) kepada pengguna yang mengirimkan tugas di akun layanan. Untuk mengetahui petunjuknya, lihat Mengelola akses ke akun layanan.Berikan izin akun layanan Dataplex lake untuk menggunakan akun layanan. Anda dapat menemukan akun layanan data lake Dataplex di halaman Detail Danau di Konsol Google Cloud.
Jika project yang berisi Dataplex lake berbeda dengan project tempat tugas akan dijalankan, berikan Peran Editor Dataproc ke akun layanan Dataplex lake di project tempat Anda menjalankan tugas.
Tempatkan artefak kode yang diperlukan (file skrip JAR, Python, atau SQL) atau file yang diarsipkan (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) di jalur Cloud Storage.Pastikan akun layanan memiliki izin
storage.objects.get
yang diperlukan ke bucket Cloud Storage yang menyimpan artefak kode ini.
Menjadwalkan tugas Spark (Java atau Python)
Konsol
Di konsol Google Cloud, buka halaman Dataplex.
Buka tampilan Proses.
Klik Create Task.
Untuk Create Custom Spark Task, klik Create task.
Pilih data lake Dataplex.
Berikan nama tugas.
Buat ID untuk tugas Anda.
Di bagian Task configuration, untuk Type, pilih Spark atau PySpark.
Masukkan argumen yang relevan.
Di kolom Service account, masukkan akun layanan pengguna yang dapat dijalankan oleh tugas Spark kustom Anda.
Klik Lanjutkan.
Opsional: Tetapkan jadwal: pilih Jalankan sekali atau Ulangi. Isi kolom yang wajib diisi.
Klik Lanjutkan.
Opsional: Sesuaikan resource dan Tambahkan setelan tambahan.
Klik Create.
gcloud
Anda dapat menjadwalkan tugas Spark (Java / Python) menggunakan perintah gcloud CLI. Tabel berikut mencantumkan parameter wajib dan opsional yang akan digunakan:
Parameter | Deskripsi |
---|---|
--lake |
ID lake untuk resource lake layanan Dataplex. |
--location |
Lokasi layanan Dataplex. |
--spark-main-class |
Class utama driver. File jar yang berisi class harus berada dalam CLASSPATH default.
|
--spark-main-jar-file-uri |
URI Cloud Storage file jar yang berisi
class utama.
|
--spark-archive-uris |
Opsional: URI Cloud Storage arsip yang akan diekstrak ke dalam direktori kerja setiap eksekutor. Jenis file yang didukung:
.jar , .tar , .tar.gz ,
.tgz , dan .zip .
|
--spark-file-uris |
Opsional: URI Cloud Storage file yang akan ditempatkan ke dalam direktori kerja setiap eksekutor. |
--batch-executors-count |
Opsional: Jumlah total eksekutor tugas. Nilai defaultnya adalah 2. |
--batch-max-executors-count |
Opsional: Jumlah maksimum eksekutor yang dapat dikonfigurasi. Nilai defaultnya adalah 1.000. Jika batch-max-executors-count lebih besar dari
batch-executors-count , Dataplex akan mengaktifkan
penskalaan otomatis.
|
--container-image-java-jars |
Opsional: Daftar JARS Java yang akan ditambahkan ke classpath. Input yang valid
mencakup Cloud Storage URI ke biner Jar. Misalnya, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Opsional: Kunci properti, yang ditentukan dalam format prefix:property .Misalnya, core:hadoop.tmp.dir .Untuk informasi selengkapnya, lihat Properti cluster. |
--vpc-network-tags |
Opsional: Daftar tag jaringan yang akan diterapkan ke tugas. |
--vpc-network-name |
Opsional: Jaringan Virtual Private Cloud tempat tugas dijalankan. Secara default, Dataplex menggunakan jaringan VPC bernama Default dalam project. Anda hanya boleh menggunakan salah satu dari --vpc-network-name atau --vpc-sub-network-name .
|
--vpc-sub-network-name |
Opsional: Sub-jaringan VPC tempat tugas dijalankan.
Anda hanya boleh menggunakan salah satu dari --vpc-sub-network-name
atau --vpc-network-name .
|
--trigger-type |
Jenis pemicu tugas yang ditentukan pengguna. Nilai harus berupa salah satu dari:ON_DEMAND - Tugas berjalan satu kali tidak lama setelah pembuatan
tugas.RECURRING - Tugas berjalan secara berkala sesuai jadwal.
|
--trigger-start-time |
Opsional: Waktu tugas pertama kali dijalankan. Formatnya adalah `{year}-{month}-{day}T{hour}:{min}:{sec}Z`, dengan zona waktu UTC. Misalnya, "2017-01-15T01:30:00Z" mengenkode 01.30 UTC pada
tanggal 15 Januari 2017. Jika nilai ini tidak ditentukan, tugas akan berjalan
setelah dikirim jika jenis pemicunya adalah ON_DEMAND , atau
pada jadwal yang ditentukan jika jenis pemicunya adalah
RECURRING .
|
--trigger-disabled |
Opsional: Mencegah tugas dieksekusi. Parameter ini tidak
membatalkan tugas yang sudah berjalan, tetapi menonaktifkan tugas
RECURRING untuk sementara.
|
--trigger-max-retires |
Opsional: Jumlah upaya percobaan ulang sebelum dibatalkan. Tetapkan nilai ke nol agar tidak pernah mencoba lagi tugas yang gagal. |
--trigger-schedule |
Jadwal cron untuk menjalankan tugas secara berkala. |
--description |
Opsional: Deskripsi tugas. |
--display-name |
Opsional: Menampilkan nama tugas. |
--labels |
Opsional: Daftar pasangan KEY=VALUE label yang akan ditambahkan. |
--execution-args |
Opsional: Argumen yang akan diteruskan ke tugas. Argumen dapat berupa campuran
pasangan nilai kunci. Anda dapat meneruskan daftar pasangan nilai kunci yang dipisahkan koma sebagai argumen eksekusi. Untuk meneruskan argumen posisional, tetapkan kunci ke
TASK_ARGS , dan tetapkan nilai ke string yang dipisahkan koma dari
semua argumen posisional. Untuk menggunakan pembatas selain koma, lihat
escaping.Jika key-value dan argumen posisi diteruskan
bersama-sama, TASK_ARGS akan diteruskan sebagai argumen terakhir.
|
--execution-service-account |
Akun layanan yang akan digunakan untuk menjalankan tugas. |
--max-job-execution-lifetime |
Opsional: Durasi maksimum sebelum eksekusi tugas berakhir. |
--container-image |
Opsional: Image container kustom untuk lingkungan runtime tugas. Jika tidak ditentukan, image penampung default akan digunakan. |
--kms-key |
Opsional: Kunci Cloud KMS yang akan digunakan untuk enkripsi, dalam format:projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}
|
Contoh Java:
glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>
Contoh PySpark:
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>
REST
Untuk membuat tugas, gunakan API Explorer.
Menjadwalkan tugas Spark SQL
gcloud
Untuk menjadwalkan tugas Spark SQL, jalankan perintah gcloud CLI yang sama seperti dalam Menjadwalkan tugas Spark (Java atau Python), dengan parameter tambahan berikut:
Parameter | Deskripsi |
---|---|
--spark-sql-script |
Teks kueri SQL. spark-sql-script atau
spark-sql-script-file harus ada. |
--spark-sql-script-file |
Referensi ke file kueri. Nilai ini dapat berupa URI Cloud Storage file kueri, atau jalur ke konten skrip SQL.
spark-sql-script atau
spark-sql-script-file harus ada. |
--execution-args |
Untuk tugas Spark SQL, argumen berikut bersifat wajib dan harus
diteruskan sebagai argumen posisional:--output_location, <GCS uri of the output directory> --output_format, <output file format> .Format yang didukung adalah file CSV, file JSON, parquet, dan orc. |
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>
REST
Untuk membuat tugas, gunakan API Explorer.
Memantau tugas Anda
Konsol
Di konsol Google Cloud, buka halaman Dataplex:
Buka tampilan Proses.
Di tab Tasks, terdapat daftar tugas, yang difilter menurut jenis template tugas.
Di kolom Nama, klik tugas yang ingin Anda lihat.
Klik ID Tugas dari tugas yang ingin Anda lihat.
Halaman Dataproc akan terbuka di konsol Google Cloud yang memungkinkan Anda melihat detail pemantauan dan output.
gcloud
Tabel berikut mencantumkan perintah gcloud CLI untuk memantau tugas Anda.
Tindakan | Perintah gcloud CLI |
---|---|
Mencantumkan tugas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Melihat detail tugas | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Mencantumkan tugas tugas | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Melihat detail tugas | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Dataplex menjalankan tugas di Dataproc Serverless (Batch). Untuk melihat log eksekusi tugas Dataplex, ikuti langkah-langkah berikut:
Dapatkan ID tugas Dataproc Serverless (Batch). Jalankan perintah berikut:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Lihat log. Jalankan perintah berikut, menggunakan ID tugas yang Anda dapatkan dari menjalankan perintah sebelumnya:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Mengelola jadwal
Di konsol Google Cloud, dalam Dataplex, Anda dapat mengedit jadwal tugas, menghapus tugas, atau membatalkan tugas yang sedang berlangsung. Tabel berikut mencantumkan perintah gcloud CLI untuk tindakan ini.
Tindakan | Perintah gcloud CLI |
---|---|
Mengedit jadwal tugas | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Menghapus tugas | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Membatalkan tugas | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
Langkah selanjutnya
- Lihat Template Dataproc.
- Coba template bawaan untuk memindahkan data secara bertahap dari aset Cloud Storage Dataplex ke BigQuery.
- Lihat Menyiapkan pemberitahuan dan notifikasi untuk tugas Dataplex.