Mesin Spark AnalyticDB for MySQL memungkinkan Anda mengakses data di Object Storage Service (OSS) yang dimiliki oleh akun Alibaba Cloud yang sama (akses akun yang sama) atau akun Alibaba Cloud berbeda (akses lintas akun). Topik ini menjelaskan cara melakukan akses akun yang sama dan akses lintas akun ke data di OSS.
Prasyarat
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
Bucket Object Storage Service (OSS) telah dibuat di wilayah yang sama dengan kluster AnalyticDB for MySQL.
Kelompok sumber daya pekerjaan telah dibuat untuk kluster AnalyticDB for MySQL.
Akun database telah dibuat untuk kluster AnalyticDB for MySQL.
Jika Anda menggunakan akun Alibaba Cloud, Anda hanya perlu membuat akun istimewa.
Jika Anda menggunakan pengguna Resource Access Management (RAM), Anda harus membuat akun istimewa dan akun standar, serta mengaitkan akun standar tersebut dengan pengguna RAM.
-
Otorisasi telah selesai dilakukan. Untuk informasi selengkapnya, lihat Otorisasi cepat.
PentingAkses akun yang sama memerlukan izin AliyunADBSparkProcessingDataRole. Untuk akses lintas akun, Anda harus memberikan izin kepada akun Alibaba Cloud lainnya.
Langkah 1: Siapkan data
-
Siapkan file teks dan unggah ke bucket OSS. Topik ini menggunakan file teks bernama
readme.txtsebagai contoh. Untuk informasi selengkapnya, lihat Unggah file.AnalyticDB for MySQL Database product -
Buat skrip Python dan unggah ke bucket OSS. Contoh ini menggunakan skrip Python bernama
example.py, yang membaca baris pertama dari file readme.txt.import sys from pyspark.sql import SparkSession # Inisialisasi Spark. spark = SparkSession.builder.appName('OSS Example').getOrCreate() # Baca file yang ditentukan. Jalur file diteruskan sebagai argumen dari 'args'. textFile = spark.sparkContext.textFile(sys.argv[1]) # Hitung dan cetak jumlah total baris dalam file. print("File total lines: " + str(textFile.count())) # Cetak baris pertama file. print("First line is: " + textFile.first())
Langkah 2: Akses data OSS
Login ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, klik .
-
Di atas editor, pilih kelompok sumber daya pekerjaan dan jenis aplikasi Spark. Topik ini menggunakan tipe Batch sebagai contoh.
-
Di editor, masukkan kode Spark berikut untuk membaca file dari OSS dan mencetak jumlah total baris serta baris pertamanya.
Akses 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 } }Parameter:
Parameter
Deskripsi
args
Argumen untuk aplikasi Spark.
Pada contoh ini, jalur OSS file teks diberikan ke
textFile.name
Nama aplikasi Spark.
file
Jalur penyimpanan file utama untuk aplikasi Spark. File utama dapat berupa paket JAR yang berisi kelas entri atau skrip Python yang dapat dieksekusi.
PentingFile utama untuk aplikasi Spark saat ini hanya dapat disimpan di OSS.
spark.adb.roleArn
Peran RAM untuk akses lintas akun ke sumber data eksternal. Anda dapat menentukan beberapa peran dengan memisahkannya menggunakan koma (,). Formatnya adalah
acs:ram::<testAccountID>:role/<testUserName>.-
<testAccountID>: ID akun Alibaba Cloud tempat sumber data eksternal berada. -
<testUserName>: Nama peran RAM yang dibuat untuk otorisasi lintas akun. Untuk informasi selengkapnya, lihat Otorisasi akun.
CatatanParameter ini tidak diperlukan untuk akses akun yang sama ke OSS.
conf
Parameter konfigurasi untuk aplikasi Spark. Parameter ini sebagian besar konsisten dengan parameter Apache Spark standar. Formatnya adalah
key: value. Gunakan koma (,) untuk memisahkan beberapa parameter. Untuk parameter yang berbeda dari Apache Spark atau spesifik untuk AnalyticDB for MySQL, lihat Parameter konfigurasi aplikasi Spark.Akses lintas akun
{ "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 untuk aplikasi Spark.
Pada contoh ini, jalur OSS file teks diberikan ke
textFile.name
Nama aplikasi Spark.
file
Jalur penyimpanan file utama untuk aplikasi Spark. File utama dapat berupa paket JAR yang berisi kelas entri atau skrip Python yang dapat dieksekusi.
PentingFile utama untuk aplikasi Spark saat ini hanya dapat disimpan di OSS.
spark.adb.roleArn
Peran RAM untuk akses lintas akun ke sumber data eksternal. Anda dapat menentukan beberapa peran dengan memisahkannya menggunakan koma (,). Formatnya adalah
acs:ram::<testAccountID>:role/<testUserName>.-
<testAccountID>: ID akun Alibaba Cloud tempat sumber data eksternal berada. -
<testUserName>: Nama peran RAM yang dibuat untuk otorisasi lintas akun. Untuk informasi selengkapnya, lihat Otorisasi akun.
CatatanParameter ini tidak diperlukan untuk akses akun yang sama ke OSS.
conf
Parameter konfigurasi untuk aplikasi Spark. Parameter ini sebagian besar konsisten dengan parameter Apache Spark standar. Formatnya adalah
key: value. Gunakan koma (,) untuk memisahkan beberapa parameter. Untuk parameter yang berbeda dari Apache Spark atau spesifik untuk AnalyticDB for MySQL, lihat Parameter konfigurasi aplikasi Spark. -
-
Klik Run Now.
Setelah Pekerjaan selesai, Anda dapat melihat output-nya di log Pekerjaan. Untuk melakukannya, buka Applications pada halaman Spark JAR Development, lalu klik Logs untuk Pekerjaan tersebut. Untuk informasi selengkapnya, lihat Editor pengembangan Spark.
Referensi
-
Untuk ikhtisar pengembangan aplikasi Spark, lihat Pengantar pengembangan aplikasi Spark.
-
Untuk detail tentang parameter konfigurasi aplikasi Spark, lihat Parameter konfigurasi aplikasi Spark.