Aplikasi Spark di AnalyticDB for MySQL Enterprise Edition, Basic Edition, dan Data Lakehouse Edition dijelaskan dalam format JSON. Skrip konfigurasi mencakup semua informasi aplikasi, termasuk nama aplikasi, jalur paket JAR, dan parameter konfigurasi. Panduan ini menjelaskan cara mengonfigurasi aplikasi Spark.
Perhatian
Enterprise Edition, Basic Edition, dan Data Lakehouse Edition saat ini dalam rilis canary. Untuk meminta uji coba Enterprise Edition, Basic Edition, dan Data Lakehouse Edition, Submit a ticket.
Aplikasi batch
Spark mendukung aplikasi batch, streaming, dan SQL. Eksekusi aplikasi batch memerlukan paket JAR atau file Python yang berisi kelas entri. Anda juga dapat menambahkan paket JAR tambahan, sandbox Python, serta parameter kelas entri sesuai kebutuhan bisnis.
Anda dapat menulis aplikasi batch Spark di AnalyticDB for MySQL menggunakan parameter baris perintah serupa dengan alat spark-submit.
Contoh konfigurasi aplikasi batch
Contoh berikut menunjukkan aplikasi batch Spark tipikal yang membaca data dari Object Storage Service (OSS). Skrip konfigurasi mencakup parameter seperti nama aplikasi, paket JAR yang berisi kelas entri, kelas entri beserta parameternya, serta parameter eksekusi. Skrip ditulis dalam format JSON. Contoh:
{
"args": ["oss://${testBucketName}/data/test/test.csv"],
"name": "spark-oss-test",
"file": "oss://${testBucketName/jars/test/spark-examples-0.0.1-SNAPSHOT.jar",
"className": "com.aliyun.spark.oss.SparkReadOss",
"conf": {
"spark.driver.resourceSpec": "medium",
"spark.executor.resourceSpec": "medium",
"spark.executor.instances": 2,
"spark.adb.connectors": "oss"
}
}Tabel berikut menjelaskan parameter yang digunakan untuk konfigurasi aplikasi batch.
Parameter | Diperlukan | Contoh | Deskripsi |
args | Tidak |
| Parameter input aplikasi Spark. Pisahkan beberapa parameter dengan koma (,). |
name | Tidak |
| Nama aplikasi Spark. |
file | Ya untuk aplikasi yang ditulis dalam Python, Java, atau Scala |
| Jalur yang menyimpan file utama aplikasi Spark. File utama bisa berupa paket JAR yang berisi kelas entri atau file eksekusi entri Python. Catatan File utama aplikasi Spark harus disimpan di OSS. |
className | Ya untuk aplikasi yang ditulis dalam Java atau Scala |
| Kelas entri program Java atau Scala. Kelas entri tidak diperlukan untuk Python. |
sqls | Ya untuk aplikasi SQL |
| Pernyataan SQL yang dapat digunakan untuk langsung mengirimkan aplikasi batch SQL tanpa perlu menentukan paket JAR atau file Python. Parameter ini tidak dapat digunakan bersama dengan parameter file, className, atau args. Anda dapat menentukan beberapa pernyataan SQL untuk aplikasi Spark. Pisahkan beberapa pernyataan SQL dengan koma (,). Mereka dieksekusi dalam urutan yang ditentukan. |
jars | Tidak |
| Paket JAR yang diperlukan untuk aplikasi Spark. Pisahkan beberapa paket JAR dengan koma (,). Saat aplikasi Spark berjalan, paket JAR ditambahkan ke classpath driver dan executor Java virtual machines (JVM). Catatan Semua paket JAR yang diperlukan untuk aplikasi Spark harus disimpan di OSS. |
files | Tidak |
| File yang diperlukan untuk aplikasi Spark. File-file ini diunduh ke direktori kerja driver dan executor. Alias dapat dikonfigurasikan untuk file-file ini. Contoh: Pisahkan beberapa file dengan koma (,). Catatan
|
archives | Tidak |
| Paket kompresi yang diperlukan untuk aplikasi Spark. Paket tersebut harus dalam format .TAR.GZ. Paket-paket tersebut akan diekstraksi ke direktori kerja proses Spark. Alias dapat dikonfigurasikan untuk file yang terkandung dalam paket. Contoh: Pisahkan beberapa paket dengan koma (,). Catatan Semua paket kompresi yang diperlukan untuk aplikasi Spark harus disimpan di OSS. Jika sebuah paket gagal diekstraksi, tugas tersebut juga gagal. |
pyFiles | Tidak untuk aplikasi Python |
| File Python yang diperlukan untuk aplikasi PySpark. File-file tersebut harus dalam format ZIP, PY, atau EGG. Jika beberapa file Python diperlukan, kami sarankan Anda menggunakan file dalam format ZIP atau EGG. Anda dapat merujuk file Python dalam kode Python dengan menggunakan modul. Pisahkan beberapa paket dengan koma (,). Catatan Semua file Python yang diperlukan untuk aplikasi PySpark harus disimpan di OSS. |
conf | Ya |
| Parameter konfigurasi yang diperlukan untuk aplikasi Spark, mirip dengan Apache Spark. Parameter tersebut harus dalam format |
Aplikasi SQL
AnalyticDB for MySQL memungkinkan Anda mengirimkan aplikasi Spark SQL langsung di konsol tanpa perlu mengemas pernyataan ke dalam file JAR atau menulis kode Python. Fitur ini membantu pengembang data menganalisis data menggunakan Spark. Saat mengirimkan aplikasi Spark SQL, setel jenis aplikasi ke SQL.
Contoh konfigurasi aplikasi SQL
-- Berikut hanya contoh SparkSQL. Ubah konten dan jalankan program spark Anda.
conf spark.driver.resourceSpec=medium;
conf spark.executor.instances=2;
conf spark.executor.resourceSpec=medium;
conf spark.app.name=Spark SQL Test;
conf spark.adb.connectors=oss;
-- Berikut adalah pernyataan sql Anda
show databases;Jenis pernyataan yang didukung oleh Spark SQL
Anda dapat mengedit pernyataan SQL di editor Spark. Setiap pernyataan individu harus dipisahkan dengan titik koma (;).
Spark SQL mendukung jenis pernyataan berikut:
Pernyataan CONF
Pernyataan CONF ditempatkan sebelum pernyataan SQL untuk menentukan pengaturan Spark.
Setiap pernyataan CONF menentukan nilai parameter untuk mengirimkan aplikasi Spark. Setiap pernyataan CONF individu harus dipisahkan dengan titik koma (;).
Jangan mengapit kunci dan nilai dalam pernyataan CONF dengan tanda kutip tunggal (') atau tanda kutip ganda (").
Untuk informasi lebih lanjut tentang parameter konfigurasi yang didukung oleh pernyataan CONF, lihat bagian "Deskripsi Parameter conf" dari topik ini.
Pernyataan ADD JAR
Pernyataan ADD JAR ditempatkan sebelum pernyataan SQL untuk menambahkan paket JAR yang diperlukan untuk mengeksekusi pernyataan Spark SQL, seperti paket JAR fungsi yang ditentukan pengguna (UDF) dan konektor sumber data berbagai jenis. Paket JAR harus ditentukan dalam format jalur OSS.
Setiap pernyataan ADD JAR menentukan paket JAR dalam format jalur OSS. Jalur tidak perlu diapit dengan tanda kutip tunggal (') atau tanda kutip ganda ("). Setiap pernyataan ADD JAR individu harus dipisahkan dengan titik koma (;).
Pernyataan DDL atau DML yang didukung oleh Spark SQL, termasuk
SELECTdanINSERT.
Beralih layanan metadata
Secara default, Spark SQL menggunakan layanan metadata yang disediakan oleh AnalyticDB for MySQL. Anda dapat beralih ke layanan metadata lain menggunakan salah satu metode berikut:
In-memory catalog
CONF spark.sql.catalogImplementation = in-memory;Hive metastore 2.3.7 atau versi lain yang dibangun ke dalam Spark
CONF spark.sql.catalogImplementation = hive; CONF spark.sql.hive.metastore.version = 2.3.7;CatatanUntuk terhubung ke Hive metastore yang dikelola sendiri, Anda dapat mengganti konfigurasi default dengan konfigurasi standar Apache Spark. Untuk informasi lebih lanjut tentang konfigurasi standar Apache Spark, lihat Konfigurasi Spark.
Deskripsi parameter conf
Parameter konfigurasi Spark di AnalyticDB for MySQL mirip dengan Apache Spark. Tabel berikut menjelaskan parameter konfigurasi AnalyticDB for MySQL yang tidak sesuai dengan Apache Spark dan parameter spesifik untuk AnalyticDB for MySQL.
Spesifikasi driver dan executor yang ditentukan
PentingPenggunaan parameter yang dijelaskan dalam tabel berikut berbeda dari Apache Spark.
Parameter spark.driver.resourceSpec dan spark.executor.resourceSpec disetel ke nilai yang sama.
Parameter
Deskripsi
Parameter yang sesuai di Apache Spark
spark.driver.resourceSpec
Spesifikasi sumber daya driver Spark. Setiap jenis sesuai dengan spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Jenis di bagian "Spesifikasi sumber daya Spark" dari topik ini.
Contoh:
CONF spark.driver.resourceSpec = c.small;. Dalam contoh ini, driver Spark menempati spesifikasi sumber daya 1 core dan 2 GB memori.spark.driver.cores dan spark.driver.memory
spark.executor.resourceSpec
Spesifikasi sumber daya setiap executor Spark. Setiap jenis sesuai dengan spesifikasi yang berbeda. Untuk informasi lebih lanjut, lihat kolom Jenis di bagian "Spesifikasi sumber daya Spark" dari topik ini.
Contoh:
CONF spark.executor.resourceSpec = c.small;. Dalam contoh ini, setiap executor Spark menempati spesifikasi sumber daya 1 core dan 2 GB memori.spark.executor.cores dan spark.executor.memory
Spark UI
Parameter
Nilai default
Deskripsi
spark.app.log.rootPath
Tidak ada
Direktori tempat log acara Spark UI dan log yang dihasilkan oleh aplikasi Spark AnalyticDB for MySQL disimpan. Anda harus secara manual menentukan jalur OSS untuk parameter ini. Jika tidak, Anda tidak dapat mengakses Spark UI atau melihat log aplikasi.
Pemeliharaan Pengguna RAM
Parameter
Nilai default
Deskripsi
spark.adb.roleArn
Tidak ada
Nama Sumber Daya Cloud (ARN) Alibaba dari peran Resource Access Management (RAM) yang diberi izin untuk mengirimkan aplikasi Spark di konsol RAM. Untuk informasi lebih lanjut, lihat Ikhtisar peran RAM. Parameter ini hanya diperlukan saat Anda ingin mengirimkan aplikasi Spark sebagai pengguna RAM.
Konektor Sumber Data Bawaan di Spark AnalyticDB for MySQL
Parameter
Nilai default
Deskripsi
spark.adb.connectors
Tidak ada
Nama konektor bawaan di Spark AnalyticDB for MySQL. Pisahkan nama konektor dengan koma (,). Nilai valid: OSS, hbase1.x, dan tablestore.
spark.hadoop.io.compression.codec.snappy.native
false
Menentukan apakah file Snappy dalam format Snappy standar. Secara default, Hadoop mengenali file Snappy yang diedit di Hadoop. Jika Anda menyetel parameter ini ke true, pustaka Snappy standar digunakan untuk dekompresi. Jika tidak, pustaka Snappy default Hadoop digunakan untuk dekompresi.
Akses VPC dan Koneksi Sumber Data
Parameter
Nilai default
Deskripsi
spark.adb.eni.vswitchId
Tidak ada
ID vSwitch yang terkait dengan antarmuka jaringan elastis (ENI). ID ini digunakan untuk mengakses virtual private cloud (VPC). Jika instance Elastic Compute Service (ECS) Anda dapat mengakses sumber data tujuan, Anda dapat menyetel parameter ini ke ID vSwitch yang terhubung ke instance ECS Anda.
spark.adb.eni.securityGroupId
Tidak ada
ID grup keamanan yang terkait dengan ENI. ID ini digunakan untuk mengakses VPC. Jika instance ECS Anda dapat mengakses sumber data tujuan, Anda dapat menyetel parameter ini ke ID grup keamanan yang dimiliki oleh instance ECS Anda.
spark.adb.eni.extraHosts
Tidak ada
Pemetaan antara alamat IP dan nama host. Parameter ini memungkinkan Spark untuk mengurai nama host sumber data. Parameter ini diperlukan jika Anda ingin terhubung ke sumber data Hive yang dikelola sendiri.
CatatanPisahkan alamat IP dan nama host dengan spasi. Pisahkan beberapa kelompok alamat IP dan nama host dengan koma (,). Contoh: "ip0 master0, ip1 master1".
Koneksi dari Spark SQL ke Metadata AnalyticDB for MySQL
Parameter
Nilai default
Deskripsi
spark.sql.hive.metastore.version
Tidak ada
Versi metastore Hive. Jika Anda menyetel parameter ini ke
ADB, Anda dapat mengakses metadata AnalyticDB for MySQL dan membaca data tabel dari AnalyticDB for MySQL.Percobaan Ulang Aplikasi
Parameter
Nilai default
Deskripsi
spark.adb.maxAttempts
1
Jumlah maksimum percobaan ulang. Nilai default adalah 1, yang berarti aplikasi spark tidak diulang ketika gagal.
Jika Anda menyetel parameter ini ke 3, aplikasi Spark akan diulang hingga tiga kali dalam jendela geser.
spark.adb.attemptFailuresValidityInterval
Long.MAX
Durasi jendela geser. Unit: milidetik.
Sebagai contoh, jika Anda menyetel parameter ini ke 6000, sistem menghitung jumlah percobaan ulang dalam 6.000 milidetik terakhir setelah percobaan ulang gagal. Jika jumlah percobaan ulang kurang dari nilai spark.adb.maxAttempts, sistem akan terus mencoba menjalankan aplikasi.
Konfigurasi Sumber
Parameter
Nilai default
Deskripsi
spark.adb.driver.cpu-vcores-ratio
1
Rasio vCPU terhadap core CPU aktual yang digunakan oleh driver. Sebagai contoh, jika driver menggunakan spesifikasi sumber daya medium sebesar 2 core dan 8 GB memori dan Anda menyetel parameter ini ke 2, driver dapat menjalankan 4 vCPU secara paralel. Anda juga dapat menyetel spark.driver.cores ke 4 untuk mencapai performa yang sama.
spark.adb.executor.cpu-vcores-ratio
1
Rasio vCPU terhadap core CPU aktual yang digunakan oleh executor. Jika utilitas CPU suatu tugas rendah, Anda dapat mengonfigurasi parameter ini untuk meningkatkan utilitas CPU. Sebagai contoh, jika executor menggunakan spesifikasi sumber daya medium sebesar 2 core dan 8 GB memori dan Anda menyetel parameter ini ke 2, executor dapat menjalankan 4 vCPU secara paralel. Ini berarti 4 tugas dijadwalkan secara paralel. Anda juga dapat menyetel spark.executor.cores ke 4 untuk mencapai performa yang sama.
Spesifikasi sumber daya Spark
Tipe | Spesifikasi | |
CPU cores | Memori (GB) | |
c.small | 1 | 2 |
small | 1 | 4 |
m.small | 1 | 8 |
c.medium | 2 | 4 |
medium | 2 | 8 |
m.medium | 2 | 16 |
c.large | 4 | 8 |
large | 4 | 16 |
m.large | 4 | 32 |
c.xlarge | 8 | 16 |
xlarge | 8 | 32 |
m.xlarge | 8 | 64 |
c.2xlarge | 16 | 32 |
2xlarge | 16 | 64 |
m.2xlarge | 16 | 128 |