Topik ini menjelaskan cara mengatur lingkungan pengembangan Spark di MaxCompute.
Jika Anda menggunakan sistem operasi Windows, lihat Mengatur Lingkungan Pengembangan Windows.
Prasyarat
Sebelum mengatur lingkungan pengembangan Spark di MaxCompute, pastikan perangkat lunak berikut telah terinstal di sistem operasi Linux Anda:
Nomor versi dan jalur instalasi perangkat lunak yang digunakan dalam topik ini hanya untuk referensi. Versi sebenarnya yang harus diunduh dan diinstal dapat berbeda tergantung pada sistem operasi Anda.
JDK
Contoh perintah berikut menunjukkan cara menginstal JDK di sistem operasi Linux. Nama paket JDK bervariasi sesuai situasi. Anda bisa mendapatkan nama paket JDK dengan menjalankan perintah
sudo yum -y list java*.sudo yum install -y java-1.8.0-openjdk-devel.x86_64Python
Contoh perintah berikut menunjukkan cara menginstal Python di sistem operasi Linux. Nama paket Python bervariasi sesuai situasi.
# Dapatkan paket Python. sudo wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz # Ekstrak paket Python. sudo tar -zxvf Python-2.7.10.tgz # Pindah ke jalur tempat paket Python diekstraksi dan tentukan jalur instalasi. cd Python-2.7.10 sudo ./configure --prefix=/usr/local/python2 # Kompilasi dan instal paket Python. sudo make sudo make installMaven
Contoh perintah berikut menunjukkan cara menginstal Maven di sistem operasi Linux. Jalur paket Maven bervariasi sesuai situasi.
# Dapatkan paket Maven. sudo wget https://dlcdn.apache.org/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz # Ekstrak paket Maven. sudo tar -zxvf apache-maven-3.8.7-bin.tar.gzGit
Contoh perintah berikut menunjukkan cara menginstal Git di sistem operasi Linux.
# Dapatkan paket Git. sudo wget https://github.com/git/git/archive/v2.17.0.tar.gz # Ekstrak paket Git. sudo tar -zxvf v2.17.0.tar.gz # Instal dependensi yang diperlukan untuk mengkompilasi kode sumber Git. sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker # Pindah ke jalur tempat paket Git diekstraksi. cd git-2.17.0 # Kompilasi kode sumber Git. sudo make prefix=/usr/local/git all # Instal Git di jalur /usr/local/git. sudo make prefix=/usr/local/git install
Unduh paket klien Spark di MaxCompute dan unggah paket tersebut ke sistem operasi Anda
Paket klien Spark di MaxCompute dirilis dengan fitur autentikasi MaxCompute. Ini memungkinkan Spark di MaxCompute berfungsi sebagai klien yang mengirimkan pekerjaan ke Proyek MaxCompute Anda menggunakan skrip spark-submit. MaxCompute menyediakan paket rilis untuk Spark 1.x, Spark 2.x, dan Spark 3.x. Anda dapat mengunduh paket-paket ini dari tautan berikut:
Spark-1.6.3: Digunakan untuk mengembangkan aplikasi Spark 1.x.
Spark-2.3.0: Digunakan untuk mengembangkan aplikasi Spark 2.x.
Spark-2.4.5: Digunakan untuk mengembangkan aplikasi Spark 2.x. Untuk informasi lebih lanjut tentang tindakan pencegahan saat menggunakan Spark 2.4.5, lihat Tindakan Pencegahan Saat Menggunakan Spark 2.4.5.
Spark-3.1.1: Digunakan untuk mengembangkan aplikasi Spark 3.x. Untuk informasi lebih lanjut tentang tindakan pencegahan saat menggunakan Spark 3.1.1, lihat Tindakan Pencegahan Saat Menggunakan Spark 3.1.1.
Unggah paket klien Spark di MaxCompute ke sistem operasi Linux Anda dan ekstrak paket tersebut. Anda dapat masuk ke jalur tempat paket klien Spark di MaxCompute berada dan jalankan perintah berikut untuk mengekstrak paket:
sudo tar -xzvf spark-2.3.0-odps0.33.0.tar.gzKonfigurasikan variabel lingkungan
Perintah yang digunakan untuk mengonfigurasi variabel lingkungan di bagian ini hanya dapat dieksekusi oleh pengguna dengan izin administrator.
Anda harus mengonfigurasi variabel lingkungan di CLI sistem operasi Linux Anda. Berikut adalah cara mengonfigurasi variabel lingkungan dan informasi terkait.
Konfigurasikan variabel lingkungan Java.
Dapatkan jalur instalasi Java. Contoh perintah:
# Jika Anda menggunakan yum untuk menginstal Java, Java diinstal di jalur /usr secara default. Anda dapat menjalankan perintah berikut untuk menanyakan jalur instalasi Java. Jika Anda menggunakan jalur instalasi kustom, jalur sebenarnya yang berlaku. whereis java ls -lrt /usr/bin/java ls -lrt /etc/alternatives/java # Hasil berikut dikembalikan. Dalam hasil tersebut, /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64 adalah jalur instalasi Java. /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre/bin/java
Edit variabel lingkungan Java. Contoh perintah:
# Edit file konfigurasi untuk variabel lingkungan. vim /etc/profile # Tekan i untuk masuk ke mode edit dan tambahkan variabel lingkungan ke akhir file konfigurasi. # Set JAVA_HOME ke jalur instalasi Java sebenarnya. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH # Tekan tombol Esc untuk keluar dari mode edit dan masukkan :wq untuk menutup file konfigurasi. # Jalankan perintah berikut untuk membuat modifikasi berlaku: source /etc/profile # Periksa apakah variabel lingkungan Java berhasil dikonfigurasi. java -version # Hasil berikut dikembalikan: openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Konfigurasikan variabel lingkungan Spark.
Dapatkan jalur tempat paket klien Spark di MaxCompute diekstraksi. Gambar berikut menunjukkan bahwa jalurnya adalah
/home/spark-2.3.0-odps0.33.0. Jalur ekstraksi dan nama paket bervariasi sesuai situasi.
Edit variabel lingkungan Spark. Contoh perintah:
# Edit file konfigurasi untuk variabel lingkungan. vim /etc/profile # Tekan i untuk masuk ke mode edit dan tambahkan variabel lingkungan ke akhir file konfigurasi. # Set SPARK_HOME ke jalur sebenarnya tempat paket klien Spark di MaxCompute diekstraksi. export SPARK_HOME=/home/spark-2.3.0-odps0.33.0 export PATH=$SPARK_HOME/bin:$PATH # Tekan tombol Esc untuk keluar dari mode edit dan masukkan :wq untuk menutup file konfigurasi. # Jalankan perintah berikut untuk membuat modifikasi berlaku: source /etc/profile
Konfigurasikan variabel lingkungan Python.
Jika Anda menggunakan PySpark, Anda harus mengonfigurasi variabel lingkungan Python.
Dapatkan jalur instalasi Python. Contoh perintah:

Edit variabel lingkungan Python. Contoh perintah:
# Edit file konfigurasi untuk variabel lingkungan. vim /etc/profile # Tekan i untuk masuk ke mode edit dan tambahkan variabel lingkungan ke akhir file konfigurasi. # Set PATH ke jalur instalasi Python sebenarnya. export PATH=/usr/bin/python/bin/:$PATH # Tekan tombol Esc untuk keluar dari mode edit dan masukkan :wq untuk menutup file konfigurasi. # Jalankan perintah berikut untuk membuat modifikasi berlaku: source /etc/profile # Periksa apakah variabel lingkungan Python berhasil dikonfigurasi. python --version # Hasil berikut dikembalikan: Python 2.7.5
Konfigurasikan variabel lingkungan Maven.
Dapatkan jalur tempat paket Maven diekstraksi. Gambar berikut menunjukkan bahwa jalurnya adalah
/home/apache-maven-3.8.7. Jalur ekstraksi dan nama paket bervariasi sesuai situasi.
Edit variabel lingkungan Maven. Contoh perintah:
# Edit file konfigurasi untuk variabel lingkungan. vim /etc/profile # Tekan i untuk masuk ke mode edit dan tambahkan variabel lingkungan ke akhir file konfigurasi. # Set MAVEN_HOME ke jalur sebenarnya tempat paket Maven diekstraksi. export MAVEN_HOME=/home/apache-maven-3.8.7 export PATH=$MAVEN_HOME/bin:$PATH # Tekan tombol Esc untuk keluar dari mode edit dan masukkan :wq untuk menutup file konfigurasi. # Jalankan perintah berikut untuk membuat modifikasi berlaku: source /etc/profile # Periksa apakah variabel lingkungan Maven berhasil dikonfigurasi. mvn -version # Hasil berikut dikembalikan: Apache Maven 3.8.7 (9b656c72d54e5bacbed989b64718c159fe39b537) Maven home: /home/apache-maven-3.8.7 Java version: 1.8.0_322, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.19.91-25.1.al7.x86_64", arch: "amd64", family: "unix"
Konfigurasikan variabel lingkungan Git.
Dapatkan jalur instalasi Git. Contoh perintah:
whereis git
Edit variabel lingkungan Git. Contoh perintah:
# Edit file konfigurasi untuk variabel lingkungan. vim /etc/profile # Tekan i untuk masuk ke mode edit dan tambahkan variabel lingkungan ke akhir file konfigurasi. # Set PATH ke jalur instalasi Git sebenarnya. export PATH=/usr/local/git/bin/:$PATH # Tekan tombol Esc untuk keluar dari mode edit dan masukkan :wq untuk menutup file konfigurasi. # Jalankan perintah berikut untuk membuat modifikasi berlaku: source /etc/profile # Periksa apakah variabel lingkungan Git berhasil dikonfigurasi. git --version # Hasil berikut dikembalikan: git version 2.24.4
Konfigurasikan file spark-defaults.conf
Jika Anda menggunakan klien Spark di MaxCompute untuk pertama kali, ubah nama file spark-defaults.conf.template di folder conf jalur ekstraksi paket klien Spark di MaxCompute menjadi spark-defaults.conf. Kemudian, konfigurasikan informasi di dalam file tersebut. Jika Anda tidak mengubah nama file, konfigurasi tidak akan berlaku. Contoh perintah:
# Pindah ke jalur tempat paket klien Spark di MaxCompute diekstraksi dan pergi ke folder conf. Jalur sebenarnya berlaku.
cd /home/spark-2.3.0-odps0.33.0/conf
# Ubah nama file spark-defaults.conf.template.
mv spark-defaults.conf.template spark-defaults.conf
# Edit file spark-defaults.conf.
vim spark-defaults.conf
# Tekan i untuk masuk ke mode edit dan tambahkan konfigurasi berikut ke akhir file konfigurasi.
spark.hadoop.odps.project.name = <MaxCompute_project_name>
spark.hadoop.odps.access.id = <AccessKey_id>
spark.hadoop.odps.access.key = <AccessKey_secret>
spark.hadoop.odps.end.point = <Endpoint> # Titik akhir yang digunakan untuk menghubungkan klien Spark di MaxCompute ke Proyek MaxCompute Anda. Anda dapat memodifikasi titik akhir berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Endpoint.
# Untuk Spark 2.3.0, set spark.sql.catalogImplementation ke odps. Untuk Spark 2.4.5, set spark.sql.catalogImplementation ke hive.
spark.sql.catalogImplementation={odps|hive}
# Pertahankan konfigurasi berikut:
spark.hadoop.odps.task.major.version = cupid_v2
spark.hadoop.odps.cupid.container.image.enable = true
spark.hadoop.odps.cupid.container.vm.engine.type = hyper
spark.hadoop.odps.moye.trackurl.host = http://jobview.odps.aliyun.comMaxCompute_project_name: Nama Proyek MaxCompute yang ingin Anda akses.
Parameter ini menentukan nama Proyek MaxCompute Anda, bukan Ruang Kerja DataWorks yang sesuai dengan Proyek MaxCompute. Anda dapat masuk ke Konsol MaxCompute. Di bilah navigasi atas, pilih wilayah. Di panel navigasi kiri, pilih Workspace > Projects untuk melihat nama Proyek MaxCompute.
AccessKey_id: ID AccessKey yang digunakan untuk mengakses Proyek MaxCompute.
Anda dapat memperoleh ID AccessKey dari halaman Pasangan AccessKey.
AccessKey_secret: Rahasia AccessKey yang sesuai dengan ID AccessKey.
Anda dapat memperoleh Rahasia AccessKey dari halaman Pasangan AccessKey.
Endpoint: Titik akhir publik wilayah tempat Proyek MaxCompute Anda berada.
Untuk informasi lebih lanjut tentang titik akhir publik setiap wilayah, lihat Titik Akhir di Wilayah Berbeda (Internet).
VPC_endpoint: Titik akhir VPC wilayah tempat Proyek MaxCompute Anda berada.
Untuk informasi lebih lanjut tentang titik akhir VPC setiap wilayah, lihat Titik Akhir di Wilayah Berbeda (VPC).
Parameter konfigurasi lainnya diperlukan untuk skenario khusus dan fitur. Untuk informasi lebih lanjut, lihat Detail Konfigurasi Spark di MaxCompute.
Siapkan proyek
Spark di MaxCompute menyediakan template proyek demo. Kami sarankan Anda mengunduh dan menyalin template untuk mengembangkan aplikasi Anda.
Dalam proyek demo, ruang lingkup dependensi untuk Spark di MaxCompute disediakan. Jangan ubah ruang lingkup ini. Jika tidak, pekerjaan yang Anda kirim mungkin tidak berjalan seperti yang diharapkan.
Siapkan proyek di sistem operasi Linux.
Unduh template Spark 1.x dan kompilasi template.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-1.x mvn clean packageUnduh template Spark 2.x dan kompilasi template.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-2.x mvn clean packageUnduh template Spark 3.x dan kompilasi template.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-3.x mvn clean package
Setelah Anda menjalankan perintah sebelumnya, jika pesan kesalahan muncul, menunjukkan bahwa konfigurasi lingkungan tidak valid, ikuti instruksi sebelumnya untuk memeriksa konfigurasi. Jika ada konfigurasi yang tidak valid, modifikasi konfigurasi tersebut.
Konfigurasikan dependensi
Dalam proyek Spark di MaxCompute yang Anda siapkan, konfigurasikan dependensi. Contoh perintah:
Konfigurasikan dependensi yang diperlukan untuk mengakses tabel di Proyek MaxCompute Anda.
Template Spark-1.x digunakan.
# Pergi ke folder spark-1.x. cd MaxCompute-Spark/spark-1.x # Edit file POM untuk menambahkan dependensi odps-spark-datasource. <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-spark-datasource_2.10</artifactId> <version>3.3.8-public</version> </dependency>Template Spark-2.x digunakan.
# Pergi ke folder spark-2.x. cd MaxCompute-Spark/spark-2.x # Edit file POM untuk menambahkan dependensi odps-spark-datasource. <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-spark-datasource_2.11</artifactId> <version>3.3.8-public</version> </dependency>
Konfigurasikan dependensi yang diperlukan untuk mengakses Object Storage Service (OSS).
Jika pekerjaan Anda perlu mengakses OSS, tambahkan dependensi berikut:
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>hadoop-fs-oss</artifactId> <version>3.3.8-public</version> </dependency>
Untuk informasi lebih lanjut tentang dependensi yang diperlukan saat template Spark-1.x, Spark-2.x, atau Spark-3.x digunakan, lihat Spark-1.x pom, Spark-2.x pom, atau Spark-3.x pom.
Referensikan file eksternal
Jika Anda mengembangkan jenis pekerjaan Spark berikut, Anda harus mereferensikan file eksternal:
Pekerjaan Spark yang perlu membaca data dari file konfigurasi tertentu.
Pekerjaan Spark yang memerlukan paket sumber daya tambahan atau pustaka pihak ketiga seperti file JAR atau pustaka Python.
Dalam aplikasi praktis, Anda harus mengunggah file eksternal sebelum Anda mereferensikan file tersebut. Anda dapat mengunggah file eksternal menggunakan salah satu metode berikut:
Metode 1: Unggah file eksternal menggunakan parameter Spark.
Spark di MaxCompute mendukung parameter berikut yang didefinisikan oleh Apache Spark:
--jars,--py-files,--files, dan--archives. Anda dapat mengonfigurasi parameter ini untuk mengunggah file eksternal saat Anda mengirimkan pekerjaan. Saat Anda menjalankan pekerjaan, file eksternal ini diunggah ke direktori kerja Anda.Gunakan skrip spark-submit untuk mengunggah file pada klien Spark di MaxCompute.
Catatan--jars: Parameter ini menentukan paket JAR yang ingin Anda unggah ke direktori kerja saat ini dari driver dan setiap executor. Nama paket dipisahkan dengan koma (,). Paket JAR ini ditambahkan ke classpath dari driver dan setiap executor. Anda dapat menggunakan"./your_jar_name"dalam konfigurasi pekerjaan Spark untuk menentukan paket-paket ini. Ini adalah kasus di Apache Spark.--filesdan--py-files: Dua parameter ini menentukan file umum atau file Python yang ingin Anda unggah ke direktori kerja saat ini dari driver dan setiap executor. Nama file dipisahkan dengan koma (,). Anda dapat menggunakan"./your_file_name"dalam konfigurasi pekerjaan Spark untuk menentukan file-file ini. Ini adalah kasus di Apache Spark.--archives: Parameter ini sedikit berbeda dari parameter yang didefinisikan oleh Apache Spark. Konfigurasikan parameter ini dalam formatxxx#yyydan pisahkan nama file dengan koma (,). Setelah Anda mengonfigurasi parameter --archives, file arsip yang Anda tentukan, seperti file ZIP, akan diekstraksi ke subdirektori dari direktori kerja saat ini dari driver dan setiap executor. Misalnya, jika parameter ini disetel kexx.zip#yy, Anda harus menggunakan"./yy/xx/"untuk mereferensikan konten dalam file arsip. Jika parameter ini disetel kexx.zip, Anda harus menggunakan"./xx.zip/xx/"untuk mereferensikan konten dalam file arsip. Jika Anda perlu menggunakan"./xxx/"untuk mengekstrak file arsip langsung ke direktori kerja saat ini, Anda harus menggunakan parameterspark.hadoop.odps.cupid.resources.
Gunakan DataWorks untuk menambahkan sumber daya yang diperlukan oleh pekerjaan. Untuk informasi lebih lanjut, lihat Buat dan Gunakan Sumber Daya MaxCompute.
CatatanDi konsol DataWorks, Anda dapat mengunggah file dengan ukuran hingga 200 MB. Jika ukuran file yang ingin Anda unggah melebihi 200 MB, Anda harus menggunakan Klien MaxCompute untuk mengunggah file-file ini sebagai sumber daya MaxCompute dan menambahkan sumber daya ini ke halaman DataStudio di konsol DataWorks. Untuk informasi lebih lanjut tentang sumber daya MaxCompute, lihat Kelola Sumber Daya MaxCompute.
Metode 2: Unggah file sebagai sumber daya MaxCompute.
Spark di MaxCompute menyediakan parameter
spark.hadoop.odps.cupid.resources. Parameter ini memungkinkan Anda untuk secara langsung mereferensikan sumber daya di MaxCompute. Saat Anda menjalankan pekerjaan, sumber daya yang direferensikan diunggah ke direktori kerja Anda. Untuk mengunggah file sebagai sumber daya MaxCompute, lakukan langkah-langkah berikut:Masuk ke Klien MaxCompute dan unggah file sebagai sumber daya ke Proyek MaxCompute Anda. Ukuran maksimum file yang dapat Anda unggah adalah 500 MB.
Tambahkan parameter
spark.hadoop.odps.cupid.resourceske konfigurasi pekerjaan Spark Anda. Parameter ini menentukan sumber daya MaxCompute yang diperlukan untuk menjalankan pekerjaan Spark. Konfigurasikan parameter ini dalam format<projectname>.<resourcename>. Jika Anda perlu mereferensikan beberapa file, pisahkan nama file dengan koma (,). Konfigurasi berikut menunjukkan contoh.spark.hadoop.odps.cupid.resources=public.python-python-2.7-ucs4.zip,public.myjar.jarFile sumber daya yang ditentukan diunduh ke direktori kerja saat ini dari driver dan setiap executor. Secara default, file yang diunduh diberi nama dalam format
<projectname>.<resourcename>.Anda juga dapat mengganti nama file dalam format
<projectname>.<resourcename>:<newresourcename>. Konfigurasi berikut menunjukkan contoh.spark.hadoop.odps.cupid.resources=public.myjar.jar:myjar.jarPentingParameter spark.hadoop.odps.cupid.resources hanya berlaku setelah Anda mengonfigurasi parameter ini di file spark-defaults.conf atau di konsol DataWorks. Parameter ini tidak berlaku jika ditulis dalam kode.
Setelah Anda mengunggah file menggunakan salah satu metode sebelumnya, Anda dapat mereferensikan file eksternal dalam kode. Kode berikut menunjukkan contoh:
val targetFile = "Nama file"
val file = Source.fromFile(targetFile)
for (line <- file.getLines)
println(line)
file.closeLakukan Pengujian Asap SparkPi
Setelah Anda menyelesaikan operasi sebelumnya, lakukan pengujian asap untuk memeriksa konektivitas ujung ke ujung Spark di MaxCompute. Misalnya, Anda dapat menjalankan perintah berikut untuk melakukan pengujian asap SparkPi untuk aplikasi Spark 2.x:
# /path/to/MaxCompute-Spark Konfigurasikan jalur valid untuk paket JAR terkompilasi aplikasi.
cd $SPARK_HOME
bin/spark-submit \
--class com.aliyun.odps.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
/path/to/your/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar
# Jika informasi log berikut ditampilkan, pengujian asap berhasil.
19/06/11 11:57:30 INFO Client:
client token: N/A
diagnostics: N/A
ApplicationMaster host: 11.222.166.90
ApplicationMaster RPC port: 38965
queue: queue
start time: 1560225401092
final status: SUCCEEDEDCatatan saat menjalankan Spark di MaxCompute dalam mode lokal menggunakan IntelliJ IDEA
Dalam kebanyakan kasus, kode dijalankan dalam mode kluster setelah debugging lokal berhasil. Namun, Spark di MaxCompute memungkinkan Anda menjalankan kode dalam mode lokal menggunakan IntelliJ IDEA. Saat Anda menjalankan kode dalam mode lokal menggunakan IntelliJ IDEA, perhatikan poin-poin berikut:
Tentukan parameter spark.master dalam kode.
val spark = SparkSession .builder() .appName("SparkPi") .config("spark.master", "local[4]") // Kode dapat berjalan setelah Anda menyetel spark.master ke local[N]. N menunjukkan jumlah pekerjaan Spark konkuren. .getOrCreate()Tambahkan dependensi berikut dari klien Spark di MaxCompute di IntelliJ IDEA.
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.binary.version}</artifactId> <version>${spark.version}</version> <scope>provided</scope> </dependency>Dalam file pom.xml, parameter scope disetel ke provided. Pengaturan ini dapat menyebabkan kesalahan "NoClassDefFoundError" saat Anda menjalankan kode.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$ at com.aliyun.odps.spark.examples.SparkPi$.main(SparkPi.scala:27) at com.aliyun.odps.spark.examples.Spa. r. kPi.main(SparkPi.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$ at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 moreAnda dapat melakukan langkah-langkah berikut untuk menambahkan direktori yang ditentukan oleh parameter --jars pada Spark di MaxCompute ke template proyek IntelliJ IDEA. Dengan cara ini, konfigurasi
scope=provideddapat dipertahankan dan kesalahan "NoClassDefFoundError" tidak dikembalikan saat Anda menjalankan kode dalam mode lokal menggunakan IntelliJ IDEA.Di bilah menu utama IntelliJ IDEA, pilih File > Project Structure….

Di halaman Project Structure, klik Modules di panel navigasi kiri. Lalu, pilih paket sumber daya, dan klik tab Dependencies untuk paket sumber daya tersebut.
Di tab Dependencies, klik tanda plus (+) di pojok kiri bawah dan pilih JARs or directories… untuk menambahkan direktori yang ditentukan oleh parameter --jars pada Spark di MaxCompute.
File spark-defaults.conf tidak dapat direferensikan secara langsung saat Anda menjalankan kode dalam mode lokal. Anda harus mengonfigurasi parameter terkait secara manual dalam kode.
Jika Anda mengirimkan pekerjaan menggunakan skrip spark-submit, sistem membaca konfigurasi dari file spark-defaults.conf. Jika Anda mengirimkan pekerjaan dalam mode lokal, Anda harus mengonfigurasi parameter terkait secara manual dalam kode. Kode berikut menunjukkan cara menggunakan Spark SQL untuk membaca data dari tabel MaxCompute dalam mode lokal.
val spark = SparkSession .builder() .appName("SparkPi") .config("spark.master", "local[4]") // Kode dapat berjalan setelah Anda menyetel spark.master ke local[N]. N menunjukkan jumlah pekerjaan Spark konkuren. .config("spark.hadoop.odps.project.name", "****") .config("spark.hadoop.odps.access.id", "****") .config("spark.hadoop.odps.access.key", "****") .config("spark.hadoop.odps.end.point", "http://service.cn.maxcompute.aliyun.com/api") .config("spark.sql.catalogImplementation", "odps") .getOrCreate()
Catatan saat menggunakan Spark 2.4.5
Gunakan Spark 2.4.5 untuk mengirimkan pekerjaan
Kirim pekerjaan dalam kluster Yarn. Untuk informasi lebih lanjut, lihat Mode kluster.
Setel parameter
spark.hadoop.odps.spark.versionke spark-2.4.5-odps0.33.0 di konsol DataWorks. Jika versi Spark dari grup sumber daya eksklusif di DataWorks belum diperbarui ke Spark 2.4.5, Anda dapat menggunakan grup sumber daya bersama untuk menjadwalkan pekerjaan atau hubungi tim dukungan teknis MaxCompute untuk memperbarui versi Spark.
Perubahan saat menggunakan Spark 2.4.5
Jika Anda mengirimkan pekerjaan dalam kluster Yarn, Anda harus menjalankan perintah
export HADOOP_CONF_DIR=$SPARK_HOME/confuntuk menambahkan variabel lingkungan SPARK_HOME.Jika Anda melakukan debugging dalam mode lokal, Anda harus membuat file bernama odps.conf di jalur
$SPARK_HOME/confdan tambahkan konfigurasi berikut ke file tersebut:odps.project.name = odps.access.id = odps.access.key = odps.end.point =
Perubahan dalam pengaturan parameter Spark 2.4.5
spark.sql.catalogImplementation: Parameter ini disetel kehive.spark.sql.sources.default: Parameter ini disetel kehive.spark.sql.odps.columnarReaderBatchSize: Menentukan jumlah baris dari mana pembaca vektor membaca data sekaligus. Nilai default: 4096.spark.sql.odps.enableVectorizedReader: Menentukan apakah akan mengaktifkan pembaca vektor. Nilai default: True.spark.sql.odps.enableVectorizedWriter: Menentukan apakah akan mengaktifkan penulis vektor. Nilai default: True.spark.sql.odps.split.size: Parameter ini dapat digunakan untuk menyesuaikan konkurensi operasi pembacaan data pada tabel MaxCompute. Secara default, parameter ini disetel ke 256 untuk setiap partisi. Unit: MB.
Catatan saat menggunakan Spark 3.1.1
Gunakan Spark 3.1.1 untuk mengirimkan pekerjaan
Kirim pekerjaan dalam kluster Yarn. Untuk informasi lebih lanjut, lihat Mode kluster.
Jika Anda ingin mengirimkan pekerjaan Spark versi 3.1.1 dan pekerjaan tersebut ditulis dalam Scala atau Java, Anda dapat menambahkan konfigurasi berikut ke file spark-defaults.conf:
spark.hadoop.odps.cupid.resources = public.__spark_libs__3.1.1-odps0.33.0.zip,[projectname].[Main JAR Package],[projectname].[Other JAR Package] spark.driver.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/* spark.executor.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/*CatatanJika Anda ingin mengirimkan pekerjaan Spark versi 3.1.1, Anda harus menentukan semua sumber daya yang diperlukan dalam parameter spark.hadoop.odps.cupid.resources. Sumber daya yang diperlukan termasuk paket JAR utama. Jika tidak, kelas Java terkait mungkin gagal ditemukan.
Anda tidak dapat mengirimkan pekerjaan PySpark menggunakan metode sebelumnya.
Perubahan saat menggunakan Spark 3.1.1
Jika Anda mengirimkan pekerjaan dalam kluster Yarn, Anda harus menjalankan perintah
export HADOOP_CONF_DIR=$SPARK_HOME/confuntuk menambahkan variabel lingkungan SPARK_HOME.Jika Anda mengirimkan pekerjaan PySpark dalam kluster Yarn, Anda harus menambahkan konfigurasi berikut dalam file spark-defaults.conf untuk menggunakan Spark untuk Python 3:
spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3Jika Anda melakukan debugging dalam mode lokal, Anda harus melakukan operasi berikut:
Anda harus membuat file odps.conf di direktori
$SPARK_HOME/confdan tambahkan konfigurasi berikut ke file tersebut:odps.project.name = odps.access.id = odps.access.key = odps.end.point =Anda harus menambahkan
spark.hadoop.fs.defaultFS = file:///ke kode. Contoh kode:val spark = SparkSession .builder() .config("spark.hadoop.fs.defaultFS", "file:///") .enableHiveSupport() .getOrCreate()
Perubahan dalam pengaturan parameter Spark 3.1.1
spark.sql.defaultCatalog: Parameter ini disetel keodps.spark.sql.catalog.odps: Parameter ini disetel keorg.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog.spark.sql.sources.partitionOverwriteMode: Parameter ini disetel kedynamic.spark.sql.extensions: Parameter ini disetel keorg.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions.spark.sql.odps.enableVectorizedReader: Menentukan apakah akan mengaktifkan pembaca vektor. Nilai default: True.spark.sql.odps.enableVectorizedWriter: Menentukan apakah akan mengaktifkan penulis vektor. Nilai default: True.spark.sql.catalog.odps.splitSizeInMB: Parameter ini dapat digunakan untuk menyesuaikan konkurensi operasi pembacaan data pada tabel MaxCompute. Secara default, parameter ini disetel ke 256 untuk setiap partisi. Unit: MB.