Anda dapat menjalankan tugas Spark on MaxCompute dalam mode lokal atau kluster. Anda juga dapat menjalankan tugas Spark on MaxCompute secara offline dalam mode kluster di DataWorks untuk mengintegrasikannya dengan jenis node lain guna penjadwalan. Topik ini menjelaskan cara mengonfigurasi dan menjadwalkan tugas Spark on MaxCompute di DataWorks.
Ikhtisar
Spark on MaxCompute adalah layanan komputasi MaxCompute yang kompatibel dengan Spark open-source. Layanan ini menyediakan kerangka kerja komputasi Spark di atas sumber daya komputasi terpadu dan sistem izin set data, memungkinkan Anda mengirimkan dan menjalankan tugas Spark menggunakan metode pengembangan yang sudah dikenal untuk memenuhi berbagai kebutuhan pemrosesan dan analisis data. Di DataWorks, Anda dapat menggunakan node MaxCompute Spark untuk menjadwalkan dan menjalankan tugas Spark on MaxCompute serta mengintegrasikannya dengan tugas lainnya.
Spark on MaxCompute mendukung pengembangan dalam Java, Scala, dan Python, serta menjalankan tugas dalam mode lokal atau mode kluster. Di DataWorks, tugas offline Spark on MaxCompute dijalankan dalam mode kluster. Untuk informasi lebih lanjut tentang mode eksekusi, lihat Mode eksekusi.
Batasan
Jika muncul error saat Anda melakukan commit node ODPS Spark yang menggunakan versi Spark 3.X, belilah kelompok sumber daya serverless. Untuk informasi selengkapnya, lihat Buat dan gunakan kelompok sumber daya serverless.
Persiapan
Anda dapat menggunakan node MaxCompute Spark untuk menjalankan tugas offline Spark on MaxCompute dalam Java/Scala atau Python. Langkah pengembangan dan proses konfigurasi berbeda untuk setiap bahasa. Pilih bahasa berdasarkan kebutuhan bisnis Anda.
Java/Scala
Sebelum menjalankan kode Java atau Scala di node ODPS Spark, Anda harus menyelesaikan pengembangan kode untuk tugas Spark on MaxCompute di mesin lokal Anda dan mengunggah kodenya ke DataWorks sebagai resource MaxCompute. Lakukan langkah-langkah berikut:
-
Siapkan lingkungan pengembangan.
Anda harus menyiapkan lingkungan pengembangan tempat Anda ingin menjalankan tugas Spark on MaxCompute berdasarkan sistem operasi yang digunakan. Untuk informasi selengkapnya, lihat Menyiapkan lingkungan pengembangan Linux atau Menyiapkan lingkungan pengembangan Windows.
-
Kembangkan kode Java atau Scala.
Sebelum menjalankan kode Java atau Scala di node ODPS Spark, Anda harus menyelesaikan pengembangan kode untuk tugas Spark on MaxCompute di mesin on-premise atau di lingkungan pengembangan yang telah disiapkan. Kami menyarankan Anda menggunakan templat proyek contoh yang disediakan oleh Spark on MaxCompute.
-
Paketkan kode yang telah dikembangkan dan unggah ke DataWorks.
Setelah kode selesai dikembangkan, paketkan dan unggah paket tersebut ke DataWorks sebagai resource MaxCompute. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute.
Bahasa pemrograman: Python (Gunakan lingkungan Python default)
DataWorks memungkinkan Anda mengembangkan tugas PySpark dengan menulis kode ke resource Python secara online di DataWorks dan melakukan commit serta menjalankan kodenya menggunakan node ODPS Spark. Untuk informasi tentang cara membuat resource Python di DataWorks dan melihat contoh pengembangan aplikasi Spark on MaxCompute menggunakan PySpark, lihat Buat dan gunakan resource MaxCompute dan Kembangkan aplikasi Spark on MaxCompute menggunakan PySpark.
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 kebutuhan tugas PySpark, rujuk 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 resource Python untuk pengembangan.
Bahasa pemrograman: Python (Gunakan lingkungan Python kustom)
Jika lingkungan Python default tidak memenuhi kebutuhan bisnis Anda, lakukan langkah-langkah berikut untuk menyiapkan lingkungan Python kustom guna menjalankan tugas Spark on MaxCompute Anda.
-
Siapkan lingkungan Python di mesin lokal Anda.
Anda dapat merujuk ke Versi Python PySpark dan dependensi yang didukung untuk mengonfigurasi lingkungan Python sesuai kebutuhan bisnis Anda.
-
Paketkan kode untuk lingkungan Python dan unggah paket tersebut ke DataWorks.
Anda harus memaketkan kode untuk lingkungan Python dalam format ZIP dan mengunggah paket tersebut ke DataWorks sebagai resource MaxCompute sehingga Anda dapat menjalankan tugas Spark on MaxCompute dalam lingkungan tersebut. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute.
Penjelasan parameter
DataWorks menjalankan tugas offline Spark on MaxCompute dalam mode kluster. Dalam mode ini, Anda harus menentukan titik masuk aplikasi kustom Anda dalam metode main. Tugas Spark berakhir ketika metode main selesai dieksekusi, dengan status Success atau Fail. Selain itu, Anda harus menambahkan konfigurasi dari file spark-defaults.conf satu per satu ke item konfigurasi node MaxCompute Spark. Contohnya mencakup jumlah instans executor, ukuran memori, dan konfigurasi spark.hadoop.odps.runtime.end.point.
Anda tidak perlu mengunggah file spark-defaults.conf. Sebagai gantinya, tambahkan setiap konfigurasi dari file spark-defaults.conf satu per satu sebagai item konfigurasi untuk node MaxCompute Spark.
|
Parameter |
Deskripsi |
Perintah spark-submit |
|
Spark Version |
Versi Spark. Nilai yang valid: Spark1.x, Spark2.x, dan Spark3.x. Catatan
Jika muncul error saat Anda melakukan commit node ODPS Spark yang menggunakan versi Spark 3.X, belilah kelompok sumber daya serverless. Untuk informasi selengkapnya, lihat Buat dan gunakan kelompok sumber daya serverless. |
Tidak ada |
|
Language |
Pilih Java/Scala atau Python berdasarkan bahasa pengembangan tugas Spark on MaxCompute Anda. |
Tidak ada |
|
Main JAR Resource |
File resource JAR utama atau Python. Anda harus mengunggah file resource yang diperlukan ke DataWorks dan melakukan commit file tersebut terlebih dahulu. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute. |
|
|
Configuration Item |
Item konfigurasi yang diperlukan untuk mengirimkan tugas Spark on MaxCompute.
|
|
|
Main Class |
Nama kelas utama. Parameter ini wajib diisi ketika Language diatur ke |
|
|
Parameter |
Tambahkan argumen untuk aplikasi Anda sesuai kebutuhan, dipisahkan dengan spasi. DataWorks mendukung parameter penjadwalan dalam format ${variable_name}. Setelah mengonfigurasi variabel di bidang Parameter, Anda harus memberikan nilainya di panel navigasi kanan di bawah . Catatan
Untuk informasi tentang format parameter penjadwalan yang didukung, lihat Format parameter penjadwalan yang didukung. |
|
|
Other resources |
Jenis resource berikut juga didukung. Anda dapat memilih jenis resource berikut berdasarkan kebutuhan bisnis Anda.
Anda harus mengunggah file resource yang diperlukan ke DataWorks dan melakukan commit file tersebut terlebih dahulu. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute. |
Perintah untuk berbagai jenis resource:
|
Contoh pengeditan kode sederhana
Bagian ini memberikan contoh sederhana tentang cara menggunakan node ODPS Spark untuk mengembangkan tugas Spark on MaxCompute. Dalam contoh ini, tugas Spark on MaxCompute dikembangkan untuk menentukan apakah sebuah string dapat dikonversi menjadi angka.
-
Buat resource.
-
Di halaman DataStudio, buat resource Python baru dan beri nama spark_is_number.py. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute. Gunakan kode berikut:
# -*- 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 commit resource tersebut.
-
-
Pada node ODPS Spark yang telah dibuat, konfigurasikan parameter dan properti penjadwalan untuk tugas MaxCompute Spark dengan merujuk pada bagian Penjelasan parameter dalam topik ini, lalu simpan dan commit node tersebut.
Parameter
Deskripsi
Spark Version
Pilih Spark2.x.
Language
Pilih Python.
Main Python Resource
Resource Python spark_is_number.py yang telah Anda buat.
-
Buka Operation Center di lingkungan pengembangan untuk melakukan pengisian ulang data pada node ODPS Spark. Untuk informasi selengkapnya, lihat Pengisian ulang data dan tampilkan instans pengisian ulang data (versi baru).
CatatanDataWorks tidak menyediakan titik masuk untuk menjalankan node ODPS Spark di DataStudio. Anda harus menjalankan node ODPS Spark di Operation Center di lingkungan pengembangan.
-
Lihat hasilnya.
Setelah instans pengisian ulang data berhasil dijalankan, klik tracking URL di log eksekusi 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:
-
Konfigurasi penjadwalan: Konfigurasikan properti penjadwalan periodik seperti pengaturan pengulangan eksekusi dan dependensi untuk tugas yang dijalankan secara berkala. Ikhtisar konfigurasi penjadwalan tugas.
-
Debugging tugas: Uji dan jalankan kode node untuk memverifikasi logikanya. Proses debugging tugas.
-
Penerapan tugas: Terapkan node untuk menjalankannya secara berkala berdasarkan konfigurasi penjadwalannya. Terapkan tugas.
-
Aktifkan sistem untuk mendiagnosis tugas Spark: MaxCompute menyediakan tool Logview dan Spark Web UI. Anda dapat melihat log tugas Spark untuk memeriksa apakah tugas tersebut dikirimkan dan dijalankan sesuai harapan.