全部产品
Search
文档中心

MaxCompute:Mengatur Lingkungan Pengembangan Linux

更新时间:Jul 02, 2025

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:

Catatan

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_64
  • Python

    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 install
  • Maven

    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.gz
  • Git

    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:

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.gz

Konfigurasikan variabel lingkungan

Catatan

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

      查找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)

      Java环境变量

  • 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.获取Spark包所在路径

    • 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

      配置Spark环境变量

  • Konfigurasikan variabel lingkungan Python.

    Jika Anda menggunakan PySpark, Anda harus mengonfigurasi variabel lingkungan Python.

    • Dapatkan jalur instalasi Python. Contoh perintah:配置Python环境变量

    • 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

      配置Python环境变量

  • 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.Maven包路径

    • 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

      获取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

      配置Git环境变量

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.com
  • MaxCompute_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.

Penting

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 package
  • Unduh template Spark 2.x dan kompilasi template.

    git clone https://github.com/aliyun/MaxCompute-Spark.git
    cd MaxCompute-Spark/spark-2.x
    mvn clean package
  • Unduh 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.

      • --files dan --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 format xxx#yyy dan 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 ke xx.zip#yy, Anda harus menggunakan "./yy/xx/" untuk mereferensikan konten dalam file arsip. Jika parameter ini disetel ke xx.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 parameter spark.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.

      Catatan

      Di 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:

    1. Masuk ke Klien MaxCompute dan unggah file sebagai sumber daya ke Proyek MaxCompute Anda. Ukuran maksimum file yang dapat Anda unggah adalah 500 MB.

    2. Tambahkan parameter spark.hadoop.odps.cupid.resources ke 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.jar

      File 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.jar
      Penting

      Parameter 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.close

Lakukan 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: SUCCEEDED

Catatan 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 more

    Anda 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=provided dapat dipertahankan dan kesalahan "NoClassDefFoundError" tidak dikembalikan saat Anda menjalankan kode dalam mode lokal menggunakan IntelliJ IDEA.

    1. Di bilah menu utama IntelliJ IDEA, pilih File > Project Structure….44

    2. Di halaman Project Structure, klik Modules di panel navigasi kiri. Lalu, pilih paket sumber daya, dan klik tab Dependencies untuk paket sumber daya tersebut.

    3. 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.version ke 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/conf untuk menambahkan variabel lingkungan SPARK_HOME.

    • Jika Anda melakukan debugging dalam mode lokal, Anda harus membuat file bernama odps.conf di jalur $SPARK_HOME/conf dan 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 ke hive.

    • spark.sql.sources.default: Parameter ini disetel ke hive.

    • 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/* 
      Catatan
      • Jika 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/conf untuk 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/python3
    • Jika Anda melakukan debugging dalam mode lokal, Anda harus melakukan operasi berikut:

      • Anda harus membuat file odps.conf di direktori $SPARK_HOME/conf dan 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 ke odps.

    • spark.sql.catalog.odps: Parameter ini disetel ke org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog.

    • spark.sql.sources.partitionOverwriteMode: Parameter ini disetel ke dynamic.

    • spark.sql.extensions: Parameter ini disetel ke org.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.