Menjadwalkan tugas Spark dan Spark SQL kustom

Dataplex mendukung penjadwalan eksekusi kode kustom, baik sebagai satu kali dijalankan, pada jadwal rutin, atau on-demand. On-demand sedang dalam Pratinjau dan hanya tersedia melalui API. Anda dapat menjadwalkan transformasi data pelanggan menggunakan Spark (Java), PySpark (terbatas hingga Spark versi 3.2), atau Spark SQL. Dataplex mengeksekusi kode menggunakan pemrosesan Spark serverless dan penjadwal serverless bawaan.

Terminologi

Tugas
Tugas Dataplex mewakili pekerjaan yang Anda inginkan untuk dilakukan Dataplex sesuai jadwal. Fitur ini mengenkapsulasi kode, parameter, dan jadwal Anda.
Tugas

Suatu tugas mewakili satu kali 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 akan 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 TriggerSpec tugas.

Mode penjadwalan

Dataplex mendukung mode penjadwalan berikut:

Jalankan sekali
Gunakan mode ini untuk menjalankan tugas Anda sekali saja. Anda dapat memilih untuk langsung menjalankannya atau pada waktu tertentu 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.
Jalankan sesuai permintaan

Gunakan mode ini untuk menjalankan tugas yang dibuat sebelumnya sesuai permintaan. Mode jalankan on-demand hanya didukung oleh RunTask API. Saat tugas Anda berjalan sesuai permintaan, Dataplex menggunakan parameter yang ada untuk membuat tugas. Anda dapat menentukan argumen ExecutionSpec dan label untuk menjalankan tugas.

Sebelum memulai

  1. Mengaktifkan Dataproc API.

    Mengaktifkan Dataproc API

  2. Aktifkan Akses Google Pribadi untuk jaringan dan subnetwork. 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.

  3. Membuat suatu akun layanan. Akun layanan diperlukan untuk menjadwalkan tugas Dataplex. Akun layanan harus menjadi 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 pada project tempat Anda menjalankan tugas.

    • Jika tugas perlu membaca atau memperbarui instance Dataproc Metastore yang terpasang ke lake, akun layanan memerlukan peran Dataproc Metastore Viewer atau Editor. Peran ini harus diberikan dalam project tempat danau Dataplex disiapkan.

    • Jika tugas tersebut merupakan tugas Spark SQL, Anda perlu memberikan peran Dataplex Developer kepada akun layanan. Peran ini harus diberikan dalam project tempat Dataplex lake disiapkan.

    • Jika tugas tersebut adalah tugas SQL Spark, Anda memerlukan izin administrator Cloud Storage di bucket tempat hasil ditulis.

    • Untuk menjadwalkan dan menjalankan tugas Spark SQL dan 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) pada akun layanan Anda.

  4. Beri pengguna yang mengirimkan tugas peran Service Account User (roles/iam.serviceAccountUser) di akun layanan. Untuk mengetahui petunjuknya, lihat Mengelola akses ke akun layanan.

  5. Berikan izin akun layanan Dataplex lake untuk menggunakan akun layanan tersebut. Anda dapat menemukan akun layanan Dataplex lake di halaman Lake Details pada Google Cloud Console.

  6. Jika project yang berisi Dataplex lake Anda berbeda dengan project tempat tugas akan dijalankan, berikan Peran Editor Dataproc pada project tempat Anda menjalankan tugas tersebut.

  7. Tempatkan artefak kode yang diperlukan (JAR, Python, atau file skrip SQL) atau file yang diarsipkan (.jar, .tar, .tar.gz, .tgz, .zip) di jalur Cloud Storage.

  8. 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

  1. Di konsol Google Cloud, buka halaman Dataplex:

    Buka Dataplex

  2. Buka tampilan Process.

  3. Klik Create Task.

  4. Untuk Create Custom Spark Task, klik Create task.

  5. Pilih dataplex lake.

  6. Berikan nama tugas.

  7. Buat ID untuk tugas Anda.

  8. Di bagian Task configuration, untuk Type, pilih Spark atau PySpark.

  9. Masukkan argumen yang relevan.

  10. Di kolom Service account, masukkan akun layanan pengguna yang dapat menjalankan tugas Spark kustom.

  11. Klik Lanjutkan.

  12. Opsional: Setel jadwal: pilih Jalankan sekali atau Ulangi. Isi kolom yang wajib diisi.

  13. Klik Lanjutkan.

  14. Opsional: Sesuaikan fasilitas dan Tambahkan setelan tambahan.

  15. Klik Create.

gcloud

Anda dapat menjadwalkan tugas Spark (Java / Python) menggunakan perintah gcloud CLI. Tabel berikut mencantumkan parameter wajib dan opsional untuk digunakan:

Parameter Deskripsi
--lake ID lake untuk resource lake layanan Dataplex.
--location Lokasi layanan Dataplex.
--spark-main-class Kelas utama pengemudi. File jar yang berisi class tersebut harus dalam CLASSPATH default.
--spark-main-jar-file-uri URI Cloud Storage file jar yang berisi class utama.
--spark-archive-uris Opsional: URI arsip Cloud Storage yang akan diekstrak ke direktori kerja setiap eksekutor. Jenis file yang didukung: .jar, .tar, .tar.gz, .tgz, dan .zip.
--spark-file-uris Opsional: URI file Cloud Storage yang akan ditempatkan ke 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 dapat ditambahkan ke classpath. Input yang valid mencakup URI Cloud Storage ke biner Jar.
Misalnya, gs://bucket-name/my/path/to/file.jar.
--container-image-properties Opsional: Kunci properti, ditentukan dalam format prefix:property.
Misalnya, core:hadoop.tmp.dir.
Untuk mengetahui informasi selengkapnya, lihat Properti cluster.
--vpc-network-tags Opsional: Daftar tag jaringan yang akan diterapkan ke pekerjaan.
--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: Subnetwork VPC tempat tugas berjalan.
Anda hanya boleh menggunakan salah satu dari --vpc-sub-network-name atau --vpc-network-name.
--trigger-type Jenis pemicu dari tugas yang ditentukan pengguna. Nilai harus salah satu dari:
ON_DEMAND - Tugas berjalan satu kali segera setelah pembuatan tugas.
RECURRING - Tugas berjalan secara berkala sesuai jadwal.
--trigger-start-time Opsional: Waktu tugas dijalankan untuk pertama kalinya. Formatnya adalah `{year}-{month}-{day}T{hour}:{min}:{sec}Z`, dengan zona waktu yang digunakan di UTC. Misalnya, "2017-01-15T01:30:00Z" mengenkode 01.30 UTC pada 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 dijalankan. Parameter ini tidak membatalkan tugas yang sudah berjalan, tetapi menonaktifkan tugas RECURRING untuk sementara.
--trigger-max-retires Opsional: Jumlah upaya percobaan ulang sebelum melakukan pembatalan. Tetapkan nilai ke nol untuk tidak pernah mencoba mencoba lagi tugas yang gagal.
--trigger-schedule Pencatatan jadwal untuk menjalankan tugas secara berkala.
--description Opsional: Deskripsi tugas.
--display-name Opsional: Nama tampilan tugas.
--labels Opsional: Daftar pasangan label KEY=VALUE yang akan ditambahkan.
--execution-args Opsional: Argumen yang akan diteruskan ke tugas. Argumen dapat berupa campuran pasangan nilai kunci. Anda dapat meneruskan daftar key-value pair yang dipisahkan koma sebagai argumen eksekusi. Untuk meneruskan argumen posisi, setel kunci ke TASK_ARGS, dan tetapkan nilai ke string yang dipisahkan koma dari semua argumen posisi. Untuk menggunakan pembatas selain koma, lihat escape.
Jika key-value dan argumen posisi diteruskan bersama, 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 container default akan digunakan.
--kms-key Opsional: Kunci Cloud KMS yang dapat 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 APIs Explorer.

Menjadwalkan tugas Spark SQL

gcloud

Untuk menjadwalkan tugas Spark SQL, jalankan perintah CLI gcloud yang sama seperti pada tugas Jadwalkan Spark (Java atau Python), dengan parameter tambahan berikut:

Parameter Deskripsi
--spark-sql-script Teks kueri SQL. spark-sql-script atau spark-sql-script-file wajib diisi.
--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 wajib diisi.
--execution-args Untuk tugas Spark SQL, argumen berikut wajib dan harus diteruskan sebagai argumen posisi:
--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 APIs Explorer.

Memantau tugas

Konsol

  1. Di konsol Google Cloud, buka halaman Dataplex:

    Buka Dataplex

  2. Buka tampilan Process.

  3. Di tab Tasks, terdapat daftar tugas yang difilter menurut jenis template tugas.

  4. Di kolom Name, klik tugas yang ingin Anda lihat.

  5. Klik ID Pekerjaan dari tugas yang ingin Anda lihat.

    Halaman Dataproc akan terbuka di Google Cloud Console yang memungkinkan Anda melihat detail pemantauan dan output.

gcloud

Tabel berikut mencantumkan perintah gcloud CLI untuk memantau tugas Anda.

Tindakan Perintah gcloud CLI
Membuat daftar 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>
Membuat daftar tugas dari suatu tugas gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id>
Melihat detail lowongan 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:

  1. Dapatkan ID tugas Dataproc Serverless (Batches). Jalankan perintah berikut:

    gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
    
  2. Lihat log. Jalankan perintah berikut menggunakan ID tugas yang Anda peroleh saat menjalankan perintah sebelumnya:

    gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
    

REST

Untuk get atau list tugas atau tugas, gunakan APIs Explorer.

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
Edit 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