AnalyticDB for MySQL Spark memungkinkan Anda segera memulai lingkungan pengembangan Jupyter interaktif menggunakan image Docker. Fitur ini memungkinkan Anda menghubungkan JupyterLab lokal ke AnalyticDB for MySQL Spark dan memanfaatkan sumber daya komputasi elastis kluster AnalyticDB for MySQL untuk pengujian dan komputasi interaktif.
Prasyarat
-
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
Kelompok sumber daya job 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.
-
Anda telah menyelesaikan otorisasi akun.
Jalur penyimpanan log aplikasi Spark telah dikonfigurasi.
CatatanLogin ke Konsol AnalyticDB for MySQL. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut. Di panel navigasi sebelah kiri, pilih . Klik Log Settings. Di kotak dialog yang muncul, pilih jalur default atau tentukan jalur penyimpanan kustom. Anda tidak boleh mengatur jalur penyimpanan kustom ke direktori root OSS. Pastikan jalur penyimpanan kustom tersebut berisi setidaknya satu lapis folder.
Catatan penggunaan
-
AnalyticDB for MySQL Spark saat ini hanya mendukung job Jupyter interaktif untuk Python 3.7 dan Scala 2.12.
-
Job Jupyter interaktif secara otomatis melepaskan sumber daya Spark setelah periode tidak aktif. Secara default, sumber daya dilepaskan 1.200 detik setelah blok kode terakhir selesai dieksekusi. Anda dapat mengubah timeout ini dengan mengonfigurasi parameter
spark.adb.sessionTTLSecondsdi sel Notebook Jupyter:%%configure -f { "spark.adb.sessionTTLSeconds": "3600" }
Hubungkan ke AnalyticDB for MySQL Spark
Hubungkan dengan image AnalyticDB for MySQL
-
Setelah Docker dimulai, jalankan perintah berikut untuk menarik image Jupyter AnalyticDB for MySQL:
docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre -
Mulai lingkungan pengembangan Jupyter interaktif.
Gunakan format perintah berikut:
docker run -it \ -p {host_port}:8888 \ -v {host_path}:{container_path} \ registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre \ -d {cluster_id} \ -r {resource_group_name} \ -e {api_endpoint} \ -i {access_key_id} \ -k {access_key_secret} \ -t {sts_token} # Berikan token STS atau pasangan AccessKey.Parameter:
Parameter
Wajib
Deskripsi
-p
Tidak
Memetakan port host ke port container. Formatnya adalah
-p host_port:container_port.Anda dapat menentukan port host apa pun. Port container harus
8888. Contoh ini menggunakan-p 8888:8888.-v
Tidak
Jika Anda tidak memasang folder host, file yang diedit di dalam container Docker akan hilang ketika container dihentikan. Menghentikan container juga akan menghentikan semua job Spark interaktif yang sedang berjalan. Untuk menghindari kehilangan file, gunakan salah satu metode berikut:
-
Saat memulai lingkungan Jupyter interaktif, pasang direktori host ke dalam container dan simpan file job Anda ke jalur tersebut. Formatnya adalah
-v host_path:container_path. Jalur container dapat berupa jalur apa pun, tetapi/root/jupyterdirekomendasikan. -
Sebelum menghentikan container, pastikan semua file telah disalin dan disimpan dengan benar.
Contoh ini menggunakan
-v /home/admin/notebook:/root/jupyter, yang memasang direktori/home/admin/notebookpada host ke direktori/root/jupyterdi dalam container.CatatanAnda harus menyimpan file notebook yang sedang dikerjakan ke folder
/root/jupyter. Setelah Anda menghentikan container Docker, file tersebut akan muncul di folder/home/admin/notebookpada host. Anda dapat melanjutkan pekerjaan saat memulai ulang container. Untuk informasi lebih lanjut, lihat dokumentasi manajemen volume Docker.-d
Ya
ID kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.
Anda dapat login ke Konsol AnalyticDB for MySQL dan menemukan ID kluster di daftar Cluster List.
-r
Ya
Nama kelompok sumber daya job AnalyticDB for MySQL.
Anda dapat login ke Konsol AnalyticDB for MySQL, buka halaman Cluster Management > Resource Management, lalu klik tab Resource Group Management untuk melihat informasi kelompok sumber daya.
-e
Ya
Titik akhir API untuk kluster AnalyticDB for MySQL Anda.
Untuk detailnya, lihat Endpoints.
-i
Bersyarat
ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM.
Untuk informasi cara melihat ID AccessKey dan rahasia AccessKey Anda, lihat Accounts and permissions.
-k
-t
Bersyarat
Kredensial sementara untuk peran RAM, atau token STS.
Pengguna RAM dengan izin yang diperlukan dapat memanggil operasi AssumeRole untuk memperoleh token STS untuk peran RAM. Token ini kemudian dapat digunakan untuk mengakses sumber daya Alibaba Cloud.
Contoh:
docker run -it -p 8888:8888 -v /home/admin/notebook:/root/jupyter registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre -d amv-bp164l******** -r test -e adb.aliyuncs.com -i LTAI**************** -k ****************Setelah dimulai, pesan berikut muncul. Salin URL
http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291ke browser Anda untuk terhubung ke AnalyticDB for MySQL Spark melalui layanan Jupyter.[I 2023-11-24 09:55:09.852 ServerApp] nbclassic | extension was successfully loaded. [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic extension enabled! [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic | extension was successfully loaded. [I 2023-11-24 09:55:09.853 ServerApp] Serving notebooks from local directory: /root/jupyter [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0 is running at: [I 2023-11-24 09:55:09.853 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 [I 2023-11-24 09:55:09.853 ServerApp] or http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 [I 2023-11-24 09:55:09.853 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).CatatanJika terjadi error saat memulai lingkungan Jupyter, periksa file
proxy_{timestamp}.loguntuk memecahkan masalah. -
Hubungkan dengan Notebook Jupyter lokal
Instal dan konfigurasikan lingkungan Notebook Jupyter
-
Di Jupyter, instal plugin SparkMagic untuk menjalankan job Spark interaktif. Pilih metode yang sesuai dengan versi Jupyter Anda. Langkah-langkah berikut menggunakan JupyterLab 3.x sebagai contoh.
PentingSemua langkah opsional harus dilakukan sesuai urutan yang ditentukan. Jangan lewatkan atau ubah urutannya. Jika ada langkah yang dilewati, insinyur dukungan tidak dapat mendiagnosis masalah lingkungan dari log startup Jupyter, dan Anda harus menyelesaikan error tersebut sendiri.
-
Instal SparkMagic.
pip install sparkmagic -
Instal ipywidgets.
pip install ipywidgets -
(Opsional) Instal kernel wrapper. Jalankan
pip show sparkmagicuntuk menampilkan jalur instalasi SparkMagic. Beralihlah ke direktori tersebut dan jalankan:jupyter-kernelspec install sparkmagic/kernels/sparkkernel jupyter-kernelspec install sparkmagic/kernels/pysparkkernel jupyter-kernelspec install sparkmagic/kernels/sparkrkernel -
(Opsional) Ubah file
config.jsonSparkMagic (jalur default adalah~/.sparkmagic/config.json) dan ganti127.0.0.1:5000dengan alamat IP dan port yang ingin Anda dengarkan. Kode berikut menunjukkan struktur konfigurasi sebagian. Untuk detail lebih lanjut, lihat contoh konfigurasi."kernel_python_credentials": { "username": "", "password": "", "url": "http://127.0.0.1:5000", "auth": "None" }, "kernel_scala_credentials": { "username": "", "password": "", "url": "http://127.0.0.1:5000", "auth": "None" }, "kernel_r_credentials": { "username": "", "password": "", "url": "http://127.0.0.1:5000" }, -
(Opsional) Aktifkan ekstensi server untuk memungkinkan perubahan kluster melalui kode.
jupyter server extension enable --py sparkmagic
-
Mulai AnalyticDB for MySQL proksi
Anda dapat memulai proxy AnalyticDB for MySQL dengan salah satu metode berikut.
Metode 1: Gunakan Docker
-
Setelah Docker dimulai, jalankan perintah berikut untuk menarik image Jupyter AnalyticDB for MySQL:
docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre -
Mulai proxy Docker. Jalankan perintah berikut untuk memulai container dan mendengarkan port lokal 5000.
docker run -it \ -p 5000:5000 \ -v {host_path}:{container_path} \ registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre \ -d {cluster_id} \ -r {resource_group_name} \ -e {api_endpoint} \ -i {access_key_id} \ -k {access_key_secret} \ -t {sts_token} # Berikan token STS atau pasangan AccessKey.Parameter:
Parameter
Wajib
Deskripsi
-p
Tidak
Memetakan port host ke port container. Formatnya adalah
-p host_port:container_port.Anda dapat menentukan port host apa pun. Port container harus
5000. Contoh ini menggunakan-p 5000:5000.-v
Tidak
Jika Anda tidak memasang folder host, file yang diedit di dalam container Docker akan hilang ketika container dihentikan. Menghentikan container juga akan menghentikan semua job Spark interaktif yang sedang berjalan. Untuk menghindari kehilangan file, gunakan salah satu metode berikut:
-
Saat memulai lingkungan Jupyter interaktif, pasang direktori host ke dalam container dan simpan file job Anda ke jalur tersebut. Formatnya adalah
-v host_path:container_path. Jalur container dapat berupa jalur apa pun, tetapi/root/jupyterdirekomendasikan. -
Sebelum menghentikan container, pastikan semua file telah disalin dan disimpan dengan benar.
Contoh ini menggunakan
-v /home/admin/notebook:/root/jupyter, yang memasang direktori/home/admin/notebookpada host ke direktori/root/jupyterdi dalam container.CatatanAnda harus menyimpan file notebook yang sedang dikerjakan ke folder
/root/jupyter. Setelah Anda menghentikan container Docker, file tersebut akan muncul di folder/home/admin/notebookpada host. Anda dapat melanjutkan pekerjaan saat memulai ulang container. Untuk informasi lebih lanjut, lihat dokumentasi manajemen volume Docker.-d
Ya
ID kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.
Anda dapat login ke Konsol AnalyticDB for MySQL dan menemukan ID kluster di daftar Cluster List.
-r
Ya
Nama kelompok sumber daya job AnalyticDB for MySQL.
Anda dapat masuk ke Konsol AnalyticDB for MySQL, membuka halaman Cluster Management > Resource Management, lalu mengeklik tab Resource Group Management untuk melihat informasi kelompok sumber daya.
-e
Ya
Titik akhir API untuk kluster AnalyticDB for MySQL Anda.
Untuk detailnya, lihat Endpoints.
-i
Bersyarat
ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM.
Untuk informasi cara melihat ID AccessKey dan rahasia AccessKey Anda, lihat Accounts and permissions.
-k
-t
Bersyarat
Kredensial sementara untuk peran RAM, atau token STS.
Pengguna RAM dengan izin yang diperlukan dapat memanggil operasi AssumeRole untuk memperoleh token STS untuk peran RAM. Token ini kemudian dapat digunakan untuk mengakses sumber daya Alibaba Cloud.
-
Metode 2: Gunakan CLI
-
Unduh dan instal proxy.
pip install aliyun-adb-livy-proxy-0.0.1.zip -
Jalankan perintah berikut untuk memulai proxy.
CatatanSetelah proxy AnalyticDB for MySQL diinstal, Anda dapat menjalankan
adbproxy --helpuntuk melihat daftar parameter.adbproxy --db {cluster_id} \ --rg {resource_group_name} \ --endpoint {api_endpoint} \ --host 127.0.0.1 \ --port 5000 \ -i {access_key_id} \ -k {access_key_secret} \ -t {sts_token} # Berikan token STS atau pasangan AccessKey.Parameter:
Parameter
Wajib
Deskripsi
--db
Ya
ID kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.
Anda dapat login ke Konsol AnalyticDB for MySQL dan menemukan ID kluster di daftar Cluster List.
--rg
Ya
Nama kelompok sumber daya job AnalyticDB for MySQL.
Anda dapat login ke Konsol AnalyticDB for MySQL, buka halaman Cluster Management > Resource Management, lalu klik tab Resource Group Management untuk melihat informasi kelompok sumber daya.
--endpoint
Ya
Titik akhir API untuk kluster AnalyticDB for MySQL Anda.
Untuk detailnya, lihat Endpoints.
--host
Tidak
Alamat IP lokal tempat layanan adbproxy melakukan binding. Default:
127.0.0.1.--port
Tidak
Port tempat layanan adbproxy mendengarkan. Default:
5000.-i
Bersyarat
ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM dengan izin akses ke AnalyticDB for MySQL.
Untuk informasi cara memperoleh ID AccessKey dan rahasia AccessKey, lihat Accounts and permissions.
-k
-t
Bersyarat
Kredensial sementara untuk peran RAM, atau token STS.
Pengguna RAM dengan izin yang diperlukan dapat memanggil operasi AssumeRole untuk memperoleh token STS untuk peran RAM. Token ini kemudian dapat digunakan untuk mengakses sumber daya Alibaba Cloud.
-
Setelah berhasil dimulai, konsol mengeluarkan informasi log terkait.
Mulai Jupyter
Gunakan perintah berikut untuk memulai lingkungan pengembangan Jupyter interaktif.
jupyter lab
Jika Anda telah menetapkan alamat pendengaran kustom, jalankan jupyter lab --ip=*** untuk memulai Jupyter. Ganti *** dengan alamat pendengaran kustom Anda.
Setelah dimulai, pesan berikut muncul. Salin URL http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 ke browser Anda untuk terhubung ke AnalyticDB for MySQL Spark melalui layanan Jupyter.
[I 2025-07-02 17:36:16.051 ServerApp] Serving notebooks from local directory: /home/newuser
[I 2025-07-02 17:36:16.052 ServerApp] Jupyter Server 2.16.0 is running at:
[I 2025-07-02 17:36:16.052 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
[I 2025-07-02 17:36:16.052 ServerApp] http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
[I 2025-07-02 17:36:16.052 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Jalankan job di Jupyter
Mulai dan konfigurasikan sesi Spark
-
Setelah terhubung ke AnalyticDB for MySQL Spark melalui layanan Jupyter, klik PySpark untuk membuat job PySpark baru. Secara default, job Spark berjalan dengan parameter konfigurasi berikut:
{ "kind": "pyspark", "heartbeatTimeoutInSecond": "60", "spark.driver.resourceSpec": "medium", "spark.executor.resourceSpec": "medium", "spark.executor.instances": "1", "spark.dynamicAllocation.shuffleTracking.enabled": "true", "spark.dynamicAllocation.enabled": "true", "spark.dynamicAllocation.minExecutors": "0", "spark.dynamicAllocation.maxExecutors": "1", "spark.adb.sessionTTLSeconds": "1200" } -
Untuk mengubah parameter konfigurasi aplikasi Spark, gunakan perintah
%%configure -f.-
Mulai ulang kernel.
Di bagian atas halaman, klik untuk memastikan tidak ada aplikasi Spark yang berjalan di notebook Jupyter saat ini.
-
Masukkan parameter konfigurasi aplikasi Spark kustom di sel Notebook Jupyter.
PentingSaat menyesuaikan parameter konfigurasi aplikasi Spark, Anda harus mengatur spark.dynamicAllocation.enabled ke false.
Konfigurasi ini mengalokasikan 32 executor untuk job Spark. Setiap executor memiliki spesifikasi
medium(2 core, 8 GB), dan job tersebut dapat dialokasikan total 64 ACU sumber daya komputasi.%%configure -f { "spark.driver.resourceSpec":"large", "spark.sql.hive.metastore.version":"adb", "spark.executor.resourceSpec":"medium", "spark.adb.executorDiskSize":"100Gi", "spark.executor.instances":"32", "spark.dynamicAllocation.enabled":"false", "spark.network.timeout":"30000", "spark.memory.fraction":"0.75", "spark.memory.storageFraction":"0.3" }Untuk deskripsi detail parameter konfigurasi aplikasi Spark, lihat Spark application configuration parameters dan dokumentasi resmi Spark.
-
-
Klik tombol
untuk menerapkan parameter konfigurasi aplikasi Spark.Penting-
Parameter konfigurasi kustom tidak bertahan setelah Anda menutup halaman Notebook Jupyter. Anda harus mengonfigurasi ulang parameter aplikasi Spark saat membuka kembali halaman tersebut; jika tidak, job akan berjalan dengan parameter default.
-
Saat menjalankan job Spark di Notebook Jupyter, semua opsi konfigurasi ditulis langsung ke dalam struktur JSON, bukan ke dalam objek JSON
confseperti yang diperlukan untuk mengirim job batch.
-
Jalankan job
-
Jalankan perintah
sparkuntuk memulai SparkSession.sparkOutput berikut menunjukkan bahwa sesi Spark telah berhasil dibuat dan berada dalam keadaan idle:
Starting Spark application ID YARN Application ID Kind State Spark UI Driver log User Current session? 2xxx s202xxxxxxxx11018 pyspark idle Link None ✓ SparkSession available as 'spark'. <pyspark.sql.session.SparkSession object at 0x7fa7a1f9c278>CatatanKlik Link pada output untuk membuka Spark UI, tempat Anda dapat melihat log job dan informasi lainnya.
-
Jalankan Spark SQL di sel Notebook Jupyter untuk mengkueri daftar database yang tersedia di kluster AnalyticDB for MySQL Anda.
PentingAnda harus memberi awalan kode Spark SQL dengan
%%sql; jika tidak, kode tersebut akan diurai sebagai kode Python secara default. Anda dapat menjalankan%%helpuntuk melihat perintah magic yang tersedia beserta penggunaannya.%%sql show databasesHasilnya mencakup kolom namespace yang berisi dua database:
ADB_External_TPCH_10GBdandemo. Hasil kueri ini konsisten dengan database di AnalyticDB for MySQL.