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.
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.
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.
Paketkan kode dan unggah ke DataWorks.
Setelah selesai mengembangkan kode, paketkan dan unggah ke DataWorks sebagai
ResourceMaxCompute. 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.
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.
Persiapkan lingkungan Python lokal.
Lihat
PySpark Python version and dependency supportuntuk petunjuk mengonfigurasi lingkungan Python yang sesuai.Paketkan lingkungan dan unggah ke DataWorks.
Kompres lingkungan Python menjadi paket ZIP dan unggah ke DataWorks sebagai
ResourceMaxCompute. Paket ini menyediakan lingkungan eksekusi untukJobSpark 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.
Jangan mengunggah file spark-defaults.conf. Sebagai gantinya, tambahkan setiap pengaturannya sebagai Configuration Item terpisah pada Node ODPS 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 | — |
Language | Pilih Java/Scala atau Python berdasarkan bahasa pengembangan | — |
Select main resource | Tentukan file Anda harus terlebih dahulu mengunggah dan melakukan commit file |
|
Configuration Item | Tentukan item konfigurasi untuk mengirimkan
|
|
Main Class | Tentukan nama |
|
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 pada panel kanan. Catatan Untuk informasi tentang format yang didukung dalam memberikan nilai pada parameter penjadwalan, lihat Supported formats for scheduling parameters. |
|
Select other resources | Anda dapat memilih
Anda harus terlebih dahulu mengunggah dan melakukan commit file | Berbagai
|
Contoh sederhana
Bagian ini menunjukkan cara menggunakan Node ODPS Spark dengan contoh sederhana: memeriksa apakah suatu string bersifat numerik.
Buat resource.
Di halaman Data Development, buat
ResourcePython 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'))Simpan dan lakukan commit
Resource.
Pada
NodeODPS Spark yang telah Anda buat, konfigurasikanParameternode danParameterpenjadwalan seperti yang dijelaskan di Parameters, lalu simpan dan lakukan commitNode.Parameter
Deskripsi
Spark version
Spark 2.x
Language
Python
Select main Python resource
Dari daftar drop-down, pilih
ResourcePython yang telah Anda buat: spark_is_number.py.Buka
Operation Centeruntuk lingkungan pengembangan dan jalankanJobData Backfill. Untuk petunjuk detail, lihat Data backfill instance O&M.CatatanKarena
NodeODPS Spark diData Developmenttidak dapat dijalankan secara langsung, Anda harus mengeksekusiJobtersebut dariOperation Centerdi lingkungan pengembangan.Lihat hasilnya.
Setelah
InstanceData Backfillberhasil dijalankan, buka tracking URL-nya diRun Loguntuk 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
JobSpark. Anda dapat memeriksaRun Loguntuk memverifikasi pengiriman dan eksekusi yang benar.