All Products
Search
Document Center

MaxCompute:Kembangkan tugas ODPS Spark

Last Updated:Mar 27, 2026

Gunakan node ODPS Spark untuk menjadwalkan dan menjalankan tugas Spark on MaxCompute di DataWorks. Tugas Spark on MaxCompute dapat dijalankan dalam mode lokal atau cluster. Topik ini menjelaskan cara menyiapkan kode, mengonfigurasi parameter node, dan menjalankan tugas dalam mode cluster di DataWorks.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Batasan

Jika Anda melakukan commit pada node ODPS Spark yang menggunakan Spark 3.x dan muncul error, submit a ticket untuk menghubungi dukungan teknis. Tim dukungan akan memperbarui versi exclusive resource group for scheduling yang digunakan untuk menjalankan node tersebut.

Siapkan kode Anda

Pilih bahasa pemrograman untuk tugas Spark on MaxCompute Anda. Langkah-langkah persiapan berbeda tergantung pada apakah Anda menggunakan Java/Scala atau Python.

Java atau Scala

Lengkapi langkah-langkah berikut di mesin lokal Anda sebelum mengonfigurasi node:

  1. Siapkan lingkungan pengembangan. Siapkan lingkungan pengembangan sesuai sistem operasi Anda:

  2. Kembangkan kode Anda. Tulis kode aplikasi Spark on MaxCompute Anda. Mulailah dari templat proyek contoh untuk mendapatkan struktur proyek yang telah dikonfigurasi dengan dependensi Spark dan MaxCompute yang tepat.

  3. Paket dan unggah file JAR. Paket kode Anda sebagai file JAR dan unggah ke DataWorks sebagai resource MaxCompute. Untuk detailnya, lihat Buat dan gunakan resource MaxCompute.

Python (lingkungan default)

Tulis kode PySpark Anda langsung di DataWorks sebagai resource Python, lalu lakukan commit. Tidak diperlukan penyiapan lokal. Untuk contoh dan instruksi, lihat Buat dan gunakan resource MaxCompute dan Kembangkan aplikasi Spark on MaxCompute menggunakan PySpark.

Jika lingkungan Python default tidak menyertakan paket pihak ketiga yang dibutuhkan oleh tugas Anda, siapkan lingkungan Python kustom (lihat di bawah), atau gunakan node PyODPS 2 atau node PyODPS 3, yang mendukung kumpulan library Python yang lebih luas.

Python (lingkungan kustom)

Jika lingkungan Python default tidak memenuhi kebutuhan Anda:

  1. Siapkan lingkungan Python kustom di mesin lokal Anda. Rujuk ke Versi Python PySpark dan dependensi yang didukung untuk mengonfigurasi lingkungan berdasarkan kebutuhan dependensi Anda.

  2. Paket dan unggah lingkungan tersebut. Paket lingkungan Python sebagai file ZIP dan unggah ke DataWorks sebagai resource MaxCompute. Untuk detailnya, lihat Buat dan gunakan resource MaxCompute.

Konfigurasi node

Dalam mode cluster, node menjalankan aplikasi Anda dengan memanggil metode Main sebagai titik masuk. Tugas dianggap selesai ketika Main mencapai status Success atau Fail.

Jangan unggah file spark-defaults.conf. Sebagai gantinya, tambahkan setiap item konfigurasi dari spark-defaults.conf satu per satu di bidang Configuration items node.
Spark task configuration

Tabel berikut menjelaskan setiap parameter. Parameter yang ditandai sebagai auto-configured telah diisi sebelumnya berdasarkan pengaturan proyek MaxCompute Anda — timpa nilai tersebut di Configuration items hanya jika tugas Anda memerlukan nilai yang berbeda.

Parameter Wajib Deskripsi Opsi spark-submit yang setara
Spark version Ya Versi Spark yang akan digunakan. Opsi: Spark1.x, Spark2.x, Spark3.x.
Language Ya Bahasa pemrograman. Opsi: Java/Scala, Python.
Main JAR resource Ya File JAR utama (Java/Scala) atau skrip Python yang diunggah sebagai resource MaxCompute. Unggah dan commit resource sebelum mengonfigurasi bidang ini. Lihat Buat dan gunakan resource MaxCompute. app jar atau file Python
Configuration items Bersyarat Properti konfigurasi Spark yang ditambahkan satu per baris — setara dengan --conf dalam spark-submit. Tambahkan item seperti jumlah executor, ukuran memori, dan spark.hadoop.odps.runtime.end.point sesuai kebutuhan. --conf PROP=VALUE
Main class Hanya Java/Scala Nama lengkap kelas utama. Tidak diperlukan untuk tugas Python. --class CLASS_NAME
Parameters Tidak Argumen yang diteruskan ke aplikasi Anda, dipisahkan dengan spasi. Gunakan format ${Nama variabel} untuk parameter penjadwalan, lalu tetapkan nilainya di bagian Scheduling parameter pada tab Properties. Untuk format yang didukung, lihat Format parameter penjadwalan yang didukung. [app arguments]
Other resources Tidak File resource tambahan yang dibutuhkan oleh tugas. Jenis yang didukung dan bahasa yang berlaku: resource Jar (hanya Java/Scala), resource Python (hanya Python), resource File (semua), resource Archive (semua, hanya file terkompresi). Unggah dan commit resource terlebih dahulu. --jars, --py-files, --files, --archives

Item yang dikonfigurasi otomatis — properti konfigurasi berikut diatur secara otomatis agar sesuai dengan nilai proyek MaxCompute Anda. Timpa nilai tersebut di Configuration items hanya jika tugas Anda memerlukan nilai yang berbeda:

  • spark.hadoop.odps.access.id

  • spark.hadoop.odps.access.key

  • spark.hadoop.odps.end.point

Contoh: menjalankan pemeriksaan string-ke-angka

Contoh ini membuat tugas PySpark yang memeriksa apakah string dapat dikonversi menjadi angka.

Langkah 1: Buat dan commit resource Python

  1. Di Konsol DataWorks, buka DataStudio dan buat resource Python bernama spark_is_number.py. Untuk detail cara membuat resource, lihat Buat dan gunakan resource MaxCompute. Tempel kode berikut ke dalam resource:

    # -*- coding: utf-8 -*-
    import sys
    from pyspark.sql import SparkSession
    
    try:
        # Hanya untuk Python 2
        reload(sys)
        sys.setdefaultencoding('utf8')
    except:
        # Python 3 tidak memerlukan ini
        pass
    
    if __name__ == '__main__':
        spark = SparkSession.builder\
            .appName("spark sql")\
            .config("spark.sql.broadcastTimeout", 20 * 60)\
            .config("spark.sql.crossJoin.enabled", True)\
            .config("odps.exec.dynamic.partition.mode", "nonstrict")\
            .config("spark.sql.catalogImplementation", "odps")\
            .getOrCreate()
    
    def is_number(s):
        try:
            float(s)
            return True
        except ValueError:
            pass
    
        try:
            import unicodedata
            unicodedata.numeric(s)
            return True
        except (TypeError, ValueError):
            pass
    
        return False
    
    print(is_number('foo'))
    print(is_number('1'))
    print(is_number('1.3'))
    print(is_number('-1.37'))
    print(is_number('1e3'))
  2. Simpan dan commit resource tersebut.

Langkah 2: Konfigurasi node ODPS Spark

Di node ODPS Spark, atur parameter berikut:

Parameter Nilai
Spark version Spark2.x
Language Python
Main Python resource spark_is_number.py (resource yang Anda buat)

Simpan dan commit node tersebut.

Langkah 3: Jalankan node di Operation Center

Node ODPS Spark tidak dapat dijalankan dari DataStudio. Buka Operation Center di lingkungan pengembangan untuk menjalankan node tersebut.

Di Operation Center, picu pengisian ulang data untuk node ODPS Spark. Untuk detailnya, lihat Pengisian ulang data dan tampilkan instans pengisian ulang data (versi baru).

Langkah 4: Lihat hasilnya

Setelah instans pengisian ulang selesai dengan sukses, klik tracking URL di log eksekusi untuk melihat output:

False
True
True
True
True

Contoh lainnya

Untuk skenario pengembangan Spark on MaxCompute tambahan:

Langkah selanjutnya

Setelah mengembangkan dan menjalankan tugas Spark on MaxCompute Anda, Anda dapat:

  • Konfigurasi properti penjadwalan: Atur penjadwalan periodik untuk node, termasuk pengaturan pengulangan eksekusi dan dependensi penjadwalan, sehingga sistem menjalankan tugas secara otomatis. Lihat Ikhtisar.

  • Debug node: Uji kode node untuk memverifikasi logika berjalan sesuai harapan sebelum masuk ke produksi. Lihat Prosedur debugging.

  • Deploy node: Deploy node agar aktif untuk penjadwalan. Setelah deployment, sistem akan menjadwalkan dan menjalankan node secara otomatis berdasarkan properti penjadwalan yang telah Anda konfigurasi. Lihat Deploy nodes.

  • Diagnosis masalah tugas: Gunakan tool Logview dan Spark Web UI untuk memeriksa log dan memverifikasi bahwa tugas diajukan dan dijalankan sesuai harapan. Lihat Aktifkan sistem untuk mendiagnosis tugas Spark.