All Products
Search
Document Center

AnalyticDB:Pengembangan job interaktif Jupyter

Last Updated:Aug 25, 2026

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.

  • Anda telah menyelesaikan otorisasi akun.

  • Jalur penyimpanan log aplikasi Spark telah dikonfigurasi.

    Catatan

    Login ke Konsol AnalyticDB for MySQL. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut. Di panel navigasi sebelah kiri, pilih Job Development > Spark JAR Development. 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.sessionTTLSeconds di sel Notebook Jupyter:

    %%configure -f
    {
       "spark.adb.sessionTTLSeconds": "3600"
    }

Hubungkan ke AnalyticDB for MySQL Spark

Hubungkan dengan image AnalyticDB for MySQL

  1. Instal dan mulai Docker.

  2. 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
  3. 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/jupyter direkomendasikan.

    • 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/notebook pada host ke direktori /root/jupyter di dalam container.

    Catatan

    Anda harus menyimpan file notebook yang sedang dikerjakan ke folder /root/jupyter. Setelah Anda menghentikan container Docker, file tersebut akan muncul di folder /home/admin/notebook pada 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=1e2caca216c1fd159da607c6360c82213b643605f11ef291 ke 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).
    Catatan

    Jika terjadi error saat memulai lingkungan Jupyter, periksa file proxy_{timestamp}.log untuk memecahkan masalah.

Hubungkan dengan Notebook Jupyter lokal

Instal dan konfigurasikan lingkungan Notebook Jupyter

  1. Instal JupyterLab atau JupyterHub.

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

    Penting

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

    1. Instal SparkMagic.

      pip install sparkmagic
    2. Instal ipywidgets.

      pip install ipywidgets 
    3. (Opsional) Instal kernel wrapper. Jalankan pip show sparkmagic untuk 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
    4. (Opsional) Ubah file config.json SparkMagic (jalur default adalah ~/.sparkmagic/config.json) dan ganti 127.0.0.1:5000 dengan 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"
      },
    5. (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

  1. Instal dan mulai Docker.

  2. 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
  3. 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/jupyter direkomendasikan.

    • 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/notebook pada host ke direktori /root/jupyter di dalam container.

    Catatan

    Anda harus menyimpan file notebook yang sedang dikerjakan ke folder /root/jupyter. Setelah Anda menghentikan container Docker, file tersebut akan muncul di folder /home/admin/notebook pada 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

  1. Unduh dan instal proxy.

    pip install aliyun-adb-livy-proxy-0.0.1.zip
  2. Jalankan perintah berikut untuk memulai proxy.

    Catatan

    Setelah proxy AnalyticDB for MySQL diinstal, Anda dapat menjalankan adbproxy --help untuk 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.

  3. Setelah berhasil dimulai, konsol mengeluarkan informasi log terkait.

Mulai Jupyter

Gunakan perintah berikut untuk memulai lingkungan pengembangan Jupyter interaktif.

jupyter lab
Catatan

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

  1. 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"
    }
  2. Untuk mengubah parameter konfigurasi aplikasi Spark, gunakan perintah %%configure -f.

    1. Mulai ulang kernel.

      Di bagian atas halaman, klik Kernel > Restart Kernel and Clear All Outputs untuk memastikan tidak ada aplikasi Spark yang berjalan di notebook Jupyter saat ini.

    2. Masukkan parameter konfigurasi aplikasi Spark kustom di sel Notebook Jupyter.

      Penting

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

  3. Klik tombol image 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 conf seperti yang diperlukan untuk mengirim job batch.

Jalankan job

  1. Jalankan perintah spark untuk memulai SparkSession.

    spark

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

    Klik Link pada output untuk membuka Spark UI, tempat Anda dapat melihat log job dan informasi lainnya.

  2. Jalankan Spark SQL di sel Notebook Jupyter untuk mengkueri daftar database yang tersedia di kluster AnalyticDB for MySQL Anda.

    Penting

    Anda harus memberi awalan kode Spark SQL dengan %%sql; jika tidak, kode tersebut akan diurai sebagai kode Python secara default. Anda dapat menjalankan %%help untuk melihat perintah magic yang tersedia beserta penggunaannya.

    %%sql
    show databases

    Hasilnya mencakup kolom namespace yang berisi dua database: ADB_External_TPCH_10GB dan demo. Hasil kueri ini konsisten dengan database di AnalyticDB for MySQL.