全部产品
Search
文档中心

DataWorks:Kembangkan Pekerjaan ODPS Spark

更新时间:Feb 06, 2026

Anda dapat menjalankan pekerjaan Spark on MaxCompute dalam Local Mode atau Cluster Mode. Di DataWorks, Anda juga dapat menjalankan Offline Jobs dalam Cluster Mode untuk mengintegrasikannya dengan tipe Node lainnya. Topik ini menjelaskan cara mengonfigurasi dan menjadwalkan Jobs tersebut.

Ikhtisar

Spark on MaxCompute adalah layanan komputasi yang disediakan oleh MaxCompute yang kompatibel dengan Spark open-source. Layanan ini menyediakan framework komputasi Spark di atas sistem sumber daya komputasi terpadu dan sistem izin data, sehingga memungkinkan Anda menggunakan metode pengembangan yang sudah dikenal untuk pemrosesan data dan analisis. Di DataWorks, Node ODPS Spark memungkinkan Anda menjadwalkan Jobs ini dan mengintegrasikannya dengan node lainnya.

Jobs Spark on MaxCompute dapat dikembangkan dalam Java, Scala, atau Python. Saat dijalankan sebagai Offline Jobs di DataWorks, pekerjaan tersebut dieksekusi dalam Cluster Mode. Untuk informasi lebih lanjut tentang mode eksekusi Spark on MaxCompute, lihat Runtime modes.

Batasan

Jika pengiriman gagal untuk Node ODPS Spark yang menggunakan Spark 3.x, Anda harus membeli dan menggunakan Serverless Resource Group. Untuk informasi lebih lanjut, lihat Use serverless resource groups.

Prasyarat

Node ODPS Spark mendukung eksekusi Offline Jobs Spark on MaxCompute menggunakan Java/Scala atau Python. Proses pengembangan dan opsi konfigurasi berbeda-beda tergantung bahasa pemrograman.

Java/Scala

Untuk menjalankan kode Java atau Scala dalam Node ODPS Spark, Anda harus terlebih dahulu mengembangkan Job tersebut dan mengunggah kode yang telah dipaketkan ke DataWorks sebagai Resource MaxCompute.

  1. Persiapkan lingkungan pengembangan.

    Siapkan lingkungan pengembangan Anda berdasarkan sistem operasi yang Anda gunakan. Untuk informasi lebih lanjut, lihat Menyiapkan Lingkungan Pengembangan Linux dan Menyiapkan Lingkungan Pengembangan Windows.

  2. Kembangkan kode Java/Scala.

    Kembangkan kode Spark on MaxCompute di lingkungan lokal Anda. Kami merekomendasikan agar Anda menggunakan template proyek contoh yang disediakan oleh Spark on MaxCompute.

  3. Paketkan kode dan unggah ke DataWorks.

    Setelah selesai mengembangkan kode, paketkan dan unggah ke DataWorks sebagai Resource MaxCompute. Untuk informasi lebih lanjut, lihat Create and use MaxCompute resources.

Python (menggunakan lingkungan default)

Di DataWorks, Anda dapat menulis kode PySpark secara langsung dalam Resource Python dan menggunakan Node ODPS Spark untuk mengirimkan dan menjalankannya. Untuk informasi lebih lanjut tentang cara membuat Resource Python di DataWorks, lihat Create and use MaxCompute resources. Untuk contoh pengembangan PySpark, lihat Develop a Spark on MaxCompute application by using PySpark.

Catatan

Metode ini menggunakan lingkungan Python default yang disediakan oleh DataWorks, yang memiliki dukungan terbatas untuk paket pihak ketiga. Jika Job Anda memerlukan dependensi tambahan, Anda dapat menyiapkan lingkungan Python kustom seperti yang dijelaskan di bagian Python (using a custom environment). Alternatifnya, Anda dapat menggunakan PyODPS 2 Node atau PyODPS 3 Node, yang menawarkan dukungan lebih baik untuk Resource Python.

Python (menggunakan lingkungan kustom)

Jika lingkungan Python default tidak memenuhi kebutuhan Anda, siapkan lingkungan kustom untuk menjalankan Job Spark on MaxCompute Anda.

  1. Persiapkan lingkungan Python lokal.

    Lihat PySpark Python version and dependency support untuk petunjuk mengonfigurasi lingkungan Python yang sesuai.

  2. Paketkan lingkungan dan unggah ke DataWorks.

    Kompres lingkungan Python menjadi paket ZIP dan unggah ke DataWorks sebagai Resource MaxCompute. Paket ini menyediakan lingkungan eksekusi untuk Job Spark on MaxCompute Anda. Untuk informasi lebih lanjut, lihat Create and use MaxCompute resources.

Parameter

DataWorks menjalankan Offline Jobs Spark on MaxCompute dalam Cluster Mode. Dalam mode ini, Anda harus menentukan titik masuk program kustom, main. Job Spark akan dihentikan ketika metode main selesai, mengembalikan status Success atau Fail. Selain itu, konfigurasi dari file spark-defaults.conf harus ditambahkan satu per satu ke bagian Configuration Item pada Node ODPS Spark. Contohnya termasuk jumlah instans executor, Memory, dan konfigurasi spark.hadoop.odps.runtime.end.point.

Catatan

Jangan mengunggah file spark-defaults.conf. Sebagai gantinya, tambahkan setiap pengaturannya sebagai Configuration Item terpisah pada Node ODPS Spark.

Spark任务配置

Parameter

Deskripsi

spark-submit command

Spark version

Versi yang tersedia meliputi Spark 1.x, Spark 2.x, dan Spark 3.x.

Catatan

Jika pengiriman gagal untuk Node ODPS Spark yang menggunakan Spark 3.x, Anda harus membeli dan menggunakan Serverless Resource Group. Untuk informasi lebih lanjut, lihat Use serverless resource groups.

Language

Pilih Java/Scala atau Python berdasarkan bahasa pengembangan Job Spark on MaxCompute Anda.

Select main resource

Tentukan file Resource JAR utama atau Resource Python utama untuk Job.

Anda harus terlebih dahulu mengunggah dan melakukan commit file Resource ke DataWorks. Untuk informasi lebih lanjut, lihat Create and use MaxCompute resources.

app jar or Python file

Configuration Item

Tentukan item konfigurasi untuk mengirimkan Job.

  • Anda tidak perlu mengonfigurasi spark.hadoop.odps.access.id, spark.hadoop.odps.access.key, atau spark.hadoop.odps.end.point. Nilai-nilai tersebut secara default menggunakan nilai proyek MaxCompute. Anda dapat mengonfigurasinya secara eksplisit untuk mengganti nilai default jika diperlukan.

  • Jangan mengunggah file spark-defaults.conf. Sebagai gantinya, tambahkan setiap pengaturannya sebagai Configuration Item terpisah pada Node ODPS Spark. Contohnya termasuk jumlah instans executor, Memory, dan konfigurasi spark.hadoop.odps.runtime.end.point.

--conf PROP=VALUE

Main Class

Tentukan nama Main Class. Parameter ini wajib diisi untuk Job Java/Scala.

--class CLASS_NAME

Arguments

Anda dapat menambahkan argumen sesuai kebutuhan, dipisahkan dengan spasi. DataWorks mendukung parameter penjadwalan. Format untuk Arguments adalah ${variable_name}. Setelah dikonfigurasi, tetapkan nilai variabel tersebut di bagian Scheduling Configuration > > Parameters pada panel kanan.

Catatan

Untuk informasi tentang format yang didukung dalam memberikan nilai pada parameter penjadwalan, lihat Supported formats for scheduling parameters.

[app arguments]

Select other resources

Anda dapat memilih Resource berikut sesuai kebutuhan.

  • Resource JAR: Didukung hanya jika bahasa pengembangan adalah Java/Scala.

  • Resource Python: Didukung hanya jika bahasa pengembangan adalah Python.

  • File Resources

  • Arsip Resources: Hanya menampilkan Resources yang dikompresi dalam format ZIP.

Anda harus terlebih dahulu mengunggah dan melakukan commit file Resource ke DataWorks. Untuk informasi lebih lanjut, lihat Create and use MaxCompute resources.

Berbagai Resources sesuai dengan opsi berikut:

  • --jars JARS

  • --py-files PY_FILES

  • --files FILES

  • --archives ARCHIVES

Contoh sederhana

Bagian ini menunjukkan cara menggunakan Node ODPS Spark dengan contoh sederhana: memeriksa apakah suatu string bersifat numerik.

  1. Buat resource.

    1. Di halaman Data Development, buat Resource Python baru dan beri nama spark_is_number.py. Untuk informasi lebih lanjut, lihat Create and use MaxCompute resources.

      # -*- coding: utf-8 -*-
      import sys
      from pyspark.sql import SparkSession
      
      try:
          # for python 2
          reload(sys)
          sys.setdefaultencoding('utf8')
      except:
          # python 3 not needed
          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 lakukan commit Resource.

  2. Pada Node ODPS Spark yang telah Anda buat, konfigurasikan Parameter node dan Parameter penjadwalan seperti yang dijelaskan di Parameters, lalu simpan dan lakukan commit Node.

    Parameter

    Deskripsi

    Spark version

    Spark 2.x

    Language

    Python

    Select main Python resource

    Dari daftar drop-down, pilih Resource Python yang telah Anda buat: spark_is_number.py.

  3. Buka Operation Center untuk lingkungan pengembangan dan jalankan Job Data Backfill. Untuk petunjuk detail, lihat Data backfill instance O&M.

    Catatan

    Karena Node ODPS Spark di Data Development tidak dapat dijalankan secara langsung, Anda harus mengeksekusi Job tersebut dari Operation Center di lingkungan pengembangan.

  4. Lihat hasilnya.

    Setelah Instance Data Backfill berhasil dijalankan, buka tracking URL-nya di Run Log untuk melihat hasilnya:

    False
    True
    True
    True
    True

Contoh lanjutan

Untuk contoh lain pengembangan Job Spark on MaxCompute untuk berbagai kasus penggunaan, lihat topik-topik berikut:

Langkah selanjutnya

Setelah Anda mengembangkan Job, Anda dapat melakukan operasi berikut.

  • Penjadwalan: Konfigurasikan properti penjadwalan untuk node tersebut. Jika tugas harus dijalankan secara berkala, Anda harus mengonfigurasi properti seperti pengaturan rerun dan dependensi penjadwalan. Untuk informasi lebih lanjut, lihat Overview of task scheduling properties.

  • Debugging tugas: Uji dan jalankan kode node saat ini untuk memverifikasi bahwa logika kodenya benar. Untuk informasi lebih lanjut, lihat Task debugging process.

  • Penerapan tugas: Setelah menyelesaikan semua operasi pengembangan, Anda harus menerapkan semua node. Setelah penerapan, node akan berjalan secara berkala sesuai konfigurasi penjadwalannya. Untuk informasi lebih lanjut, lihat Deploy tasks.

  • Diagnose Spark Jobs: MaxCompute menyediakan tool Logview dan Spark web UI untuk Job Spark. Anda dapat memeriksa Run Log untuk memverifikasi pengiriman dan eksekusi yang benar.