全部产品
Search
文档中心

MaxCompute:Kembangkan Tugas MaxCompute Spark

更新时间:Jul 06, 2025

Anda dapat menjalankan tugas Spark pada MaxCompute dalam mode lokal atau mode kluster. Anda juga dapat menjalankan tugas Spark offline pada MaxCompute dalam mode kluster di DataWorks untuk mengintegrasikan tugas dengan jenis node lainnya melalui penjadwalan. Topik ini menjelaskan cara mengonfigurasi dan menjadwalkan tugas Spark on MaxCompute di DataWorks.

Prasyarat

Sebuah node ODPS Spark telah dibuat. Untuk informasi lebih lanjut, lihat Buat dan kelola node ODPS.

Batasan

Jika terjadi kesalahan saat mengirimkan node ODPS Spark yang menggunakan versi Spark 3.X, atau ajukan tiket untuk menghubungi dukungan teknis guna memperbarui versi grup sumber daya eksklusif untuk penjadwalan yang digunakan untuk menjalankan node tersebut.

Informasi latar belakang

Spark on MaxCompute adalah layanan komputasi yang disediakan oleh MaxCompute dan kompatibel dengan Spark open source. Spark on MaxCompute menyediakan kerangka kerja komputasi Spark berdasarkan sistem sumber daya komputasi dan izin dataset yang terpadu. Layanan ini memungkinkan Anda menggunakan metode pengembangan pilihan Anda untuk mengirimkan dan menjalankan tugas Spark serta memenuhi berbagai kebutuhan pemrosesan dan analitik data. Di DataWorks, Anda dapat menggunakan node ODPS Spark untuk menjadwalkan dan menjalankan tugas Spark on MaxCompute serta mengintegrasikannya dengan jenis tugas lainnya.

Spark on MaxCompute mendukung pengembangan tugas menggunakan Java, Scala, atau Python. Anda dapat menjalankan tugas dalam mode lokal atau mode kluster. Selain itu, Anda dapat menjalankan tugas Spark offline pada MaxCompute dalam mode kluster di DataWorks. Untuk informasi lebih lanjut tentang mode operasi tugas Spark on MaxCompute, lihat Mode Operasi.

Persiapan

Node ODPS Spark memungkinkan Anda menggunakan Java, Scala, atau Python untuk mengembangkan dan menjalankan tugas Spark offline pada MaxCompute. Operasi dan parameter yang diperlukan bervariasi berdasarkan bahasa pemrograman yang digunakan. Anda dapat memilih bahasa pemrograman sesuai dengan kebutuhan bisnis Anda.

Java/Scala

Sebelum menjalankan kode Java atau Scala dalam node ODPS Spark, Anda harus menyelesaikan pengembangan kode untuk tugas Spark on MaxCompute di mesin lokal Anda dan mengunggah kode tersebut ke DataWorks sebagai sumber daya MaxCompute. Langkah-langkah yang perlu dilakukan adalah sebagai berikut:

  1. Siapkan lingkungan pengembangan.

    Siapkan lingkungan pengembangan berdasarkan sistem operasi yang digunakan. Untuk informasi lebih lanjut, lihat Siapkan Lingkungan Pengembangan Linux atau Siapkan Lingkungan Pengembangan Windows.

  2. Kembangkan kode Java atau Scala.

    Sebelum menjalankan kode Java atau Scala dalam node ODPS Spark, selesaikan pengembangan kode untuk tugas Spark on MaxCompute di mesin lokal Anda atau di lingkungan pengembangan yang telah disiapkan. Kami merekomendasikan penggunaan template proyek contoh yang disediakan oleh Spark on MaxCompute.

  3. Kemas kode yang dikembangkan dan unggah ke DataWorks.

    Setelah kode selesai dikembangkan, kemas kode tersebut dan unggah paket ke DataWorks sebagai sumber daya MaxCompute. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Sumber Daya MaxCompute.

Bahasa Pemrograman: Python (Gunakan lingkungan Python default)

DataWorks memungkinkan Anda mengembangkan tugas PySpark dengan menulis kode ke sumber daya Python secara online di DataWorks dan mengirimkan serta menjalankan kode menggunakan node ODPS Spark. Untuk informasi tentang cara membuat sumber daya Python di DataWorks dan melihat contoh pengembangan aplikasi Spark on MaxCompute menggunakan PySpark, lihat Buat dan Gunakan Sumber Daya MaxCompute dan Kembangkan Aplikasi Spark on MaxCompute Menggunakan PySpark.

Catatan

Anda dapat menggunakan lingkungan Python default yang disediakan oleh DataWorks untuk mengembangkan kode. Jika paket pihak ketiga yang didukung oleh lingkungan Python default tidak memenuhi persyaratan tugas PySpark, Anda dapat merujuk ke Bahasa Pemrograman: Python (Gunakan Lingkungan Python Kustom) untuk menyiapkan lingkungan Python kustom. Anda juga dapat menggunakan node PyODPS 2 atau node PyODPS 3, yang mendukung lebih banyak sumber daya Python untuk pengembangan.

Bahasa Pemrograman: Python (Gunakan lingkungan Python kustom)

Jika lingkungan Python default tidak memenuhi kebutuhan bisnis Anda, Anda dapat menyiapkan lingkungan Python kustom untuk menjalankan tugas Spark on MaxCompute dengan langkah-langkah berikut:

  1. Siapkan lingkungan Python di mesin lokal Anda.

    Lihat Versi Python PySpark dan Dependensi yang Didukung untuk mengonfigurasi lingkungan Python sesuai kebutuhan bisnis Anda.

  2. Kemas kode untuk lingkungan Python dan unggah paket tersebut ke DataWorks.

    Kemas kode untuk lingkungan Python dalam format ZIP dan unggah paket tersebut ke DataWorks sebagai sumber daya MaxCompute. Dengan cara ini, Anda dapat menjalankan tugas Spark on MaxCompute dalam lingkungan tersebut. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Sumber Daya MaxCompute.

Deskripsi Parameter

Anda dapat menjalankan tugas Spark offline pada MaxCompute dalam mode kluster di DataWorks. Dalam mode ini, Anda harus menentukan metode Main sebagai titik masuk aplikasi kustom. Tugas Spark berakhir ketika Main memasuki status Success atau Fail. Anda harus menambahkan item konfigurasi dalam file spark-defaults.conf ke konfigurasi node ODPS Spark. Sebagai contoh, tambahkan item konfigurasi seperti jumlah executors, ukuran memori, dan spark.hadoop.odps.runtime.end.point.

Catatan

Anda tidak perlu mengunggah file spark-defaults.conf. Sebagai gantinya, tambahkan item konfigurasi dalam file spark-defaults.conf ke konfigurasi node ODPS Spark satu per satu.

Konfigurasi Tugas Spark

Parameter

Deskripsi

Perintah spark-submit

Versi Spark

Versi Spark. Nilai valid: Spark1.x, Spark2.x, dan Spark3.x.

Catatan

Jika terjadi kesalahan saat Anda mengirimkan node ODPS Spark yang menggunakan versi Spark 3.X, ajukan tiket untuk menghubungi dukungan teknis guna memperbarui versi grup sumber daya eksklusif untuk penjadwalan yang digunakan untuk menjalankan node tersebut.

Tidak ada

Bahasa

Bahasa pemrograman. Nilai valid: Java/Scala dan Python. Anda dapat memilih bahasa pemrograman berdasarkan kebutuhan bisnis Anda.

Tidak ada

Sumber Daya Utama JAR

File sumber daya utama JAR atau Python.

Anda harus mengunggah file sumber daya yang diperlukan ke DataWorks dan mengirimkan file sumber daya tersebut terlebih dahulu. Untuk informasi lebih lanjut, lihat Buat dan gunakan sumber daya MaxCompute.

app jar atau file Python

Item Konfigurasi

Item konfigurasi yang diperlukan untuk mengirimkan tugas Spark on MaxCompute.

  • Anda tidak perlu mengonfigurasi spark.hadoop.odps.access.id, spark.hadoop.odps.access.key, atau spark.hadoop.odps.end.point. Secara default, nilai item konfigurasi ini sama dengan nilai Proyek MaxCompute. Anda juga dapat secara eksplisit mengonfigurasi item-item ini untuk menimpa nilai defaultnya jika diperlukan.

  • Anda tidak perlu mengunggah file spark-defaults.conf. Sebagai gantinya, Anda harus menambahkan item konfigurasi dalam file spark-defaults.conf ke konfigurasi node ODPS Spark satu per satu. Sebagai contoh, Anda harus menambahkan item konfigurasi seperti jumlah executor, ukuran memori, dan spark.hadoop.odps.runtime.end.point.

--conf PROP=VALUE

Kelas Utama

Nama kelas utama. Parameter ini hanya diperlukan jika Anda mengatur parameter Bahasa ke Java/Scala.

--class CLASS_NAME

Parameter

Anda dapat menambahkan parameter berdasarkan kebutuhan bisnis Anda. Pisahkan beberapa parameter dengan spasi. DataWorks memungkinkan Anda menambahkan Parameter Penjadwalan dalam format ${Nama Variabel}. Setelah parameter ditambahkan, Anda harus mengklik tab Properti di panel navigasi di sebelah kanan dan memberikan nilai kepada variabel terkait di bagian Parameter Penjadwalan.

Catatan

Untuk informasi tentang format parameter penjadwalan yang didukung, lihat Format yang didukung untuk parameter penjadwalan.

[argumen aplikasi]

Sumber daya lainnya

Jenis sumber daya berikut juga didukung. Anda dapat memilih jenis sumber daya berikut berdasarkan kebutuhan bisnis Anda.

  • Sumber daya Jar: Anda dapat memilih jenis sumber daya ini hanya jika Anda mengatur parameter Bahasa ke Java/Scala.

  • Sumber daya Python: Anda dapat memilih jenis sumber daya ini hanya jika Anda mengatur parameter Bahasa ke Python.

  • Sumber daya File

  • Sumber daya Arsip: Hanya sumber daya terkompresi yang ditampilkan.

Anda harus mengunggah file sumber daya yang diperlukan ke DataWorks dan mengirimkan file sumber daya tersebut terlebih dahulu. Untuk informasi lebih lanjut, lihat Buat dan gunakan sumber daya MaxCompute.

Perintah untuk jenis sumber daya yang berbeda:

  • --jars JARS

  • --py-files PY_FILES

  • --files FILES

  • --archives ARCHIVES

Contoh pengeditan kode sederhana

Bagian ini memberikan contoh sederhana untuk menunjukkan cara menggunakan node ODPS Spark dalam mengembangkan tugas Spark on MaxCompute. Dalam contoh ini, tugas Spark on MaxCompute dikembangkan untuk menentukan apakah string dapat dikonversi menjadi digit.

  1. Buat sumber daya.

    1. Di halaman DataStudio konsol DataWorks, buat sumber daya Python bernama spark_is_number.py. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Sumber Daya MaxCompute. Contoh kode:

      # -*- 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 kirimkan sumber daya.

  2. Di node ODPS Spark yang dibuat, konfigurasikan parameter dan properti penjadwalan untuk tugas Spark on MaxCompute dengan merujuk pada bagian Deskripsi Parameter dalam topik ini, lalu simpan dan kirimkan node tersebut.

    Parameter

    Deskripsi

    Versi Spark

    Pilih Spark2.x.

    Bahasa

    Pilih Python.

    Sumber Daya Python Utama

    Sumber daya Python spark_is_number.py yang Anda buat.

  3. Pergi ke Operation Center di lingkungan pengembangan untuk mengisi ulang data untuk node ODPS Spark. Untuk informasi lebih lanjut, lihat Isi Ulang Data dan Lihat Instance Pengisian Ulang Data (Versi Baru).

    Catatan

    DataWorks tidak menyediakan titik masuk untuk menjalankan node ODPS Spark di DataStudio. Anda harus menjalankan node ODPS Spark di Operation Center dalam lingkungan pengembangan.

  4. Lihat hasilnya.

    Setelah instance pengisian ulang data berhasil dijalankan, klik tracking URL di log yang dihasilkan untuk melihat hasilnya. Informasi berikut dikembalikan:

    False
    True
    True
    True
    True

Contoh pengeditan kode tingkat lanjut

Untuk informasi lebih lanjut tentang pengembangan tugas Spark on MaxCompute dalam skenario lainnya, lihat topik-topik berikut:

Langkah selanjutnya

Setelah menyelesaikan pengembangan tugas Spark on MaxCompute, Anda dapat melakukan operasi berikut:

  • Konfigurasikan properti penjadwalan: Anda dapat mengonfigurasi properti untuk penjadwalan periodik node. Jika Anda ingin sistem secara berkala menjadwalkan dan menjalankan tugas, konfigurasikan item seperti pengaturan ulang dan dependensi penjadwalan. Untuk informasi lebih lanjut, lihat Ikhtisar.

  • Debug node: Anda dapat men-debug dan menguji kode node untuk memeriksa apakah logika kode sesuai harapan. Untuk informasi lebih lanjut, lihat Prosedur Debugging.

  • Deploy node: Setelah menyelesaikan semua operasi pengembangan, Anda dapat mendeploy node. Setelah node dideploy, sistem akan secara berkala menjadwalkan node berdasarkan properti penjadwalan node. Untuk informasi lebih lanjut, lihat Deploy Node.