AnalyticDB for MySQL Spark memungkinkan Anda mengakses data Object Storage Service (OSS) baik dalam akun Alibaba Cloud yang sama maupun lintas akun Alibaba Cloud. Topik ini memandu Anda melalui kedua skenario tersebut dengan contoh PySpark yang membaca file teks dari OSS.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat kluster AnalyticDB for MySQL Edisi Data Lakehouse di wilayah yang sama dengan Bucket OSS Anda
Membuat kelompok sumber daya pekerjaan untuk kluster tersebut. Lihat Buat kelompok sumber daya
Menyiapkan akun database untuk kluster:
Pengguna Akun Alibaba Cloud: akun istimewa. Lihat Buat akun istimewa
Pengguna Resource Access Management (RAM): akun istimewa dan akun standar, dengan akun standar dikaitkan ke pengguna RAM. Lihat Buat akun database dan Kaitkan atau lepaskan akun database dari pengguna RAM
Menyelesaikan otorisasi. Lihat Lakukan otorisasi
Pilih skenario Anda
| Skenario | Izin yang diperlukan | Konfigurasi utama |
|---|---|---|
| Akses OSS dalam akun Alibaba Cloud yang sama | AliyunADBSparkProcessingDataRole pada akun Anda | Tidak perlu parameter tambahan |
| Akses OSS lintas akun Alibaba Cloud | Otorisasi telah diselesaikan untuk akun lain | Tambahkan spark.adb.roleArn ke blok conf |
Langkah 1: Siapkan data
Unggah file input dan skrip PySpark ke Bucket OSS Anda sebelum mengirimkan pekerjaan.
Buat file teks bernama
readme.txtdengan konten berikut, lalu unggah ke Bucket OSS Anda:AnalyticDB for MySQL Database serviceUntuk petunjuk pengunggahan, lihat Unggah objek.
Buat file Python bernama
example.pyyang membaca baris pertama darireadme.txt, lalu unggah ke Bucket OSS yang sama:import sys from pyspark.sql import SparkSession # Inisialisasi aplikasi Spark spark = SparkSession.builder.appName('OSS Example').getOrCreate() # Baca file teks — path dilewatkan melalui args textFile = spark.sparkContext.textFile(sys.argv[1]) # Cetak jumlah total baris dan baris pertama print("File total lines: " + str(textFile.count())) print("First line is: " + textFile.first())
File utama aplikasi Spark (paket JAR atau skrip Python) harus disimpan di OSS sebelum Anda mengirimkan pekerjaan.
Langkah 2: Kirim pekerjaan Spark
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas, pilih wilayah. Di panel navigasi kiri, klik Clusters. Pada tab Data Lakehouse Edition, temukan kluster Anda dan klik ID-nya.
Di panel navigasi kiri, pilih Job Development > Spark JAR Development.
Di bagian atas editor, pilih kelompok sumber daya pekerjaan dan jenis aplikasi Spark. Dalam contoh ini, jenis Batch dipilih.
Tempel JSON konfigurasi pekerjaan sesuai skenario Anda dan klik Run Now.
Akses data OSS dari akun yang sama
{ "args": ["oss://testBucketName/data/readme.txt"], "name": "spark-oss-test", "file": "oss://testBucketName/data/example.py", "conf": { "spark.driver.resourceSpec": "small", "spark.executor.resourceSpec": "small", "spark.executor.instances": 1 } }Akses data OSS dari akun berbeda
Tambahkan
spark.adb.roleArnke dalam blokconf. Parameter ini memberi tahu Spark peran RAM yang harus diasumsikan saat mengakses bucket OSS milik akun lain.{ "args": ["oss://testBucketName/data/readme.txt"], "name": "CrossAccount", "file": "oss://testBucketName/data/example.py", "conf": { "spark.adb.roleArn": "acs:ram::testAccountID:role/<testUserName>", "spark.driver.resourceSpec": "small", "spark.executor.resourceSpec": "small", "spark.executor.instances": 1 } }
Parameter
| Parameter | Deskripsi |
|---|---|
args | Argumen yang dilewatkan ke aplikasi Spark. Pisahkan beberapa nilai dengan koma (,). Dalam contoh ini, path OSS file input dilewatkan ke textFile. |
name | Nama aplikasi Spark. |
file | Path file utama — paket JAR yang berisi kelas entri, atau skrip Python sebagai titik masuk. Harus berupa path OSS. |
spark.adb.roleArn | Role RAM untuk akses OSS lintas akun. Format: acs:ram::<testAccountID>:role/<testUserName>, di mana <testAccountID> adalah ID akun Alibaba Cloud pemilik Bucket OSS, dan <testUserName> adalah nama role RAM yang dibuat selama otorisasi lintas akun. Lihat Lakukan otorisasi. Pisahkan beberapa role dengan koma (,). Tidak diperlukan untuk akses akun yang sama. |
conf | Konfigurasi Spark dalam format key:value, dipisahkan koma. Menerima parameter standar Apache Spark dan parameter khusus AnalyticDB for MySQL. Lihat Parameter konfigurasi aplikasi Spark. |
Verifikasi hasil
Setelah pekerjaan selesai dijalankan, klik Log di kolom Actions pada tab Applications di halaman Spark JAR Development untuk melihat output.
Untuk detail lebih lanjut tentang penampil log, lihat Editor Spark.