Menjadwalkan tugas Spark dan Spark SQL kustom

Knowledge Catalog (sebelumnya Dataplex Universal Catalog) mendukung penjadwalan eksekusi kode kustom, baik sebagai run satu kali, pada jadwal reguler, atau sesuai permintaan. On-demand dalam versi 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. Knowledge Catalog mengeksekusi kode menggunakan pemrosesan Spark serverless dan penjadwal serverless bawaan.

Terminologi

Tugas
Tugas Knowledge Catalog mewakili pekerjaan yang ingin Anda lakukan oleh Knowledge Catalog sesuai jadwal. Hal ini merangkum kode, parameter, dan jadwal Anda.
Tugas

Tugas mewakili satu kali eksekusi tugas Knowledge Catalog. Misalnya, jika tugas dijadwalkan untuk dijalankan setiap hari, Knowledge Catalog 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 dijalankan karena memanggil RunTask API.

  • TASK_CONFIG: Menunjukkan bahwa tugas dijalankan karena konfigurasi TriggerSpec tugas.

Mode penjadwalan

Knowledge Catalog mendukung mode penjadwalan berikut:

Jalankan sekali
Gunakan mode ini untuk menjalankan tugas Anda hanya sekali. Anda dapat memilih untuk menjalankannya segera atau pada waktu yang ditetapkan di masa mendatang. Jika Anda menjalankan tugas segera, eksekusi mungkin masih memerlukan waktu hingga dua menit untuk dimulai.
Jalankan sesuai jadwal
Gunakan mode ini untuk menjalankan tugas dengan frekuensi berulang. Pengulangan yang didukung adalah harian, mingguan, bulanan, atau kustom.
Menjalankan sesuai permintaan

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, Knowledge Catalog menggunakan parameter yang ada untuk membuat tugas. Anda dapat menentukan argumen ExecutionSpec dan label untuk menjalankan tugas.

Sebelum memulai

  1. Aktifkan Managed Service for Apache Spark API.

    Aktifkan Managed Service for Apache Spark API

  2. Aktifkan Akses Google Pribadi untuk jaringan dan subnetwork Anda. Aktifkan Akses Google Pribadi di jaringan yang Anda gunakan dengan tugas Knowledge Catalog. Jika Anda tidak menentukan jaringan atau sub-jaringan saat membuat tugas Knowledge Catalog, Knowledge Catalog akan menggunakan sub-jaringan default, dan Anda harus mengaktifkan Akses Google Pribadi untuk sub-jaringan default.

  3. Membuat suatu akun layanan. Akun layanan diperlukan untuk menjadwalkan tugas Knowledge Catalog. 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 Managed Service for Apache Spark Worker Role di project tempat Anda menjalankan tugas.

    • Jika tugas perlu membaca atau mengupdate instance Managed Service untuk Apache Spark Metastore yang terlampir ke lake, akun layanan memerlukan peran Managed Service for Apache Spark Metastore Viewer atau Editor. Peran ini harus diberikan di project tempat danau Knowledge Catalog disiapkan.

    • Jika tugas adalah tugas Spark SQL, Anda harus memberikan peran Developer Dataplex ke akun layanan. Peran ini harus diberikan di project tempat data lake Knowledge Catalog disiapkan.

    • Jika tugasnya adalah tugas Spark SQL, 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 Managed Service for Apache Spark Metastore Metadata User (roles/metastore.metadataUser) di akun layanan Anda.

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

  5. Beri akun layanan Knowledge Catalog izin untuk menggunakan akun layanan. Anda dapat menemukan akun layanan Knowledge Catalog lake di halaman Lake Details di Google Cloud konsol.

  6. Jika project yang berisi danau Knowledge Catalog berbeda dengan project tempat tugas akan dieksekusi, berikan peran Managed Service for Apache Spark Editor Role ke akun layanan danau Knowledge Catalog di project tempat Anda menjalankan tugas.

  7. Tempatkan artefak kode yang diperlukan (file JAR, Python, atau 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 Process Knowledge Catalog.

    Buka Proses

  2. Klik Create Task.

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

  4. Pilih data lake Knowledge Catalog.

  5. Berikan nama tugas.

  6. Buat ID untuk tugas Anda.

  7. Di bagian Konfigurasi tugas, untuk Jenis, pilih Spark atau PySpark.

  8. Masukkan argumen yang relevan.

  9. Di kolom Service account, masukkan akun layanan pengguna yang dapat dijalankan oleh tugas Spark kustom Anda.

  10. Klik Lanjutkan.

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

  12. Klik Lanjutkan.

  13. Opsional: Sesuaikan resource dan Tambahkan setelan tambahan.

  14. Klik Create.

gcloud

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

Parameter Deskripsi
--lake ID lake untuk resource lake layanan Knowledge Catalog.
--location Lokasi layanan Knowledge Catalog.
--spark-main-class Kelas utama pengemudi. File jar yang berisi class harus berada di CLASSPATH default.
--spark-main-jar-file-uri URI Cloud Storage file jar yang berisi kelas utama.
--spark-archive-uris Opsional: URI Cloud Storage dari arsip yang akan diekstrak ke direktori kerja setiap eksekutor. Jenis file yang didukung: .jar, .tar, .tar.gz, .tgz, dan .zip.
--spark-file-uris Opsional: URI Cloud Storage dari file yang akan ditempatkan di 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, Knowledge Catalog akan mengaktifkan penskalaan otomatis.
--container-image-java-jars Opsional: Daftar JAR 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, 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 tugas.
--vpc-network-name Opsional: Jaringan Virtual Private Cloud tempat tugas dijalankan. Secara default, Knowledge Catalog 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: Subjaringan VPC tempat tugas berjalan.
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 segera setelah tugas dibuat.
RECURRING - Tugas dijalankan secara berkala sesuai jadwal.
--trigger-start-time Opsional: Waktu saat 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 15 Januari 2017. Jika nilai ini tidak ditentukan, tugas akan berjalan setelah dikirimkan jika jenis pemicunya adalah ON_DEMAND, atau sesuai jadwal yang ditentukan jika jenis pemicunya adalah RECURRING.
--trigger-disabled Opsional: Mencegah tugas dijalankan. Parameter ini tidak membatalkan tugas yang sudah berjalan, tetapi menonaktifkan sementara tugas RECURRING.
--trigger-max-retires Opsional: Jumlah upaya percobaan ulang sebelum dibatalkan. Tetapkan nilai ke nol agar tidak pernah mencoba ulang tugas yang gagal.
--trigger-schedule Jadwal cron 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 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 APIs Explorer.

Menjadwalkan tugas Spark SQL

gcloud

Untuk menjadwalkan tugas Spark SQL, jalankan perintah gcloud CLI yang sama seperti di 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 dari 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 wajib ada 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 APIs Explorer.

Memantau tugas Anda

Konsol

  1. Di konsol Google Cloud , buka halaman Process Knowledge Catalog.

    Buka Proses

  2. Di tab Tasks, ada daftar tugas yang difilter menurut jenis template tugas.

  3. Di kolom Nama, klik tugas yang ingin Anda lihat.

  4. Klik ID Pekerjaan tugas yang ingin Anda lihat.

    Halaman Managed Service untuk Apache Spark akan terbuka di konsolGoogle 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 dari suatu 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>

Knowledge Catalog menjalankan tugas di Managed Service untuk Apache Spark (Batch). Untuk melihat log eksekusi tugas Knowledge Catalog, ikuti langkah-langkah berikut:

  1. Dapatkan ID tugas Managed Service for Apache Spark Serverless (Batch). 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 dapatkan dari 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 Katalog Pengetahuan, Anda dapat mengedit jadwal tugas, menghapus tugas, atau membatalkan tugas yang sedang berjalan. 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 berikutnya