全部产品
Search
文档中心

E-MapReduce:Gunakan Jupyter Notebook untuk berinteraksi dengan EMR Serverless Spark

更新时间:Nov 10, 2025

Jupyter Notebook adalah alat pengembangan interaktif yang andal. Anda dapat menggunakannya untuk menulis dan menjalankan kode melalui antarmuka web serta melihat hasilnya secara real time tanpa perlu mengompilasi terlebih dahulu atau menjalankan skrip secara terpisah. Topik ini menjelaskan cara membangun lingkungan pengembangan untuk berinteraksi secara efisien dengan E-MapReduce (EMR) Serverless Spark.

Informasi latar belakang

Apache Livy berinteraksi dengan Spark melalui RESTful API, sehingga menyederhanakan komunikasi antara Spark dan server aplikasi. Untuk informasi lebih lanjut mengenai API Livy, lihat REST API.

Saat menggunakan Jupyter Notebook untuk pengembangan, Anda dapat memilih salah satu metode dalam tabel berikut untuk berinteraksi dengan EMR Serverless Spark sesuai kebutuhan bisnis Anda.

Metode

Skenario

Metode 1: Gunakan citra Docker untuk membangun dan memulai lingkungan dengan cepat

Pilih metode ini jika Anda ingin membangun lingkungan pengembangan mandiri dengan cepat atau perlu mereproduksi pengaturan yang sama di mesin berbeda.

Metode 2: Gunakan Plugin sparkmagic untuk membangun dan memulai lingkungan

Plugin sparkmagic pada Jupyter Notebook berinteraksi dengan Spark melalui RESTful API dan mendukung protokol Livy, Livy Lighter, serta Ilum. Anda dapat mengonfigurasi plugin sparkmagic dan memanggil API Livy dari Serverless Spark untuk membangun lingkungan pengembangan guna berinteraksi dengan kluster Spark jarak jauh.

Prasyarat

Metode 1: Gunakan citra Docker untuk membangun dan memulai lingkungan dengan cepat

Langkah 1: Buat gerbang dan token

  1. Buat dan mulai gerbang.

    1. Buka halaman Gerbang.

      1. Masuk ke Konsol EMR.

      2. Pada bilah navigasi kiri, pilih EMR Serverless > Spark.

      3. Pada halaman Spark, klik nama ruang kerja yang dituju.

      4. Pada halaman EMR Serverless Spark, klik Operation Center > Gateway di panel navigasi sebelah kiri.

    2. Klik tab Livy Gateway.

    3. Pada halaman Livy Gateway, klik Create Livy Gateway.

    4. Pada halaman Create Gateway, masukkan Name (misalnya, Livy-gateway) dan klik Create.

      Anda dapat mengonfigurasi parameter lain sesuai kebutuhan bisnis. Untuk informasi selengkapnya mengenai parameter tersebut, lihat Manajemen gerbang.

    5. Pada halaman Livy Gateway, temukan gerbang yang telah dibuat dan klik Start pada kolom Tindakan.

  2. Buat token.

    1. Pada halaman Gateway, temukan Livy-gateway dan klik Token Management pada kolom Tindakan.

    2. Klik Create Token.

    3. Pada kotak dialog Create Token, masukkan Name (misalnya, Livy-token) dan klik OK.

    4. Salin token tersebut.

      Penting

      Setelah token dibuat, Anda harus segera menyalinnya. Token tidak dapat dilihat lagi setelah Anda meninggalkan halaman tersebut. Jika token kedaluwarsa atau hilang, atur ulang token atau buat token baru.

Langkah 2: Gunakan Docker untuk menarik dan menjalankan citra

  1. Jalankan perintah berikut untuk menarik citra.

    docker pull emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest
  2. Jalankan perintah berikut untuk menjalankan citra.

    docker run -p <host_port>:8888 emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest <endpoint> <token>

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    <host_port>

    Port host.

    <endpoint>

    Titik akhir gerbang Livy.

    Anda dapat melakukan langkah-langkah berikut untuk melihat titik akhir gerbang Livy: Pada halaman Livy Gateway, klik nama gerbang Livy yang telah dibuat. Titik akhir akan ditampilkan pada tab Overview.

    <token>

    Token yang telah Anda salin pada Langkah 1.

    Setelah citra dijalankan, informasi berikut dikembalikan:

    [I 2024-09-23 05:38:14.429 ServerApp] jupyter_lsp | extension was successfully linked.
    [I 2024-09-23 05:38:14.432 ServerApp] jupyter_server_terminals | extension was successfully linked.
    [I 2024-09-23 05:38:14.436 ServerApp] jupyterlab | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] notebook | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] Writing Jupyter server cookie secret to /root/.local/share/jupyter/runtime/jupyter_cookie_secret
    [I 2024-09-23 05:38:14.596 ServerApp] notebook_shim | extension was successfully linked.
    [I 2024-09-23 05:38:14.624 ServerApp] notebook_shim | extension was successfully loaded.
    [I 2024-09-23 05:38:14.625 ServerApp] jupyter_lsp | extension was successfully loaded.
    [I 2024-09-23 05:38:14.626 ServerApp] jupyter_server_terminals | extension was successfully loaded.
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab extension loaded from /root/miniforge3/envs/livy/lib/python3.8/site-packages/jupyterlab
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab application directory is /root/miniforge3/envs/livy/share/jupyter/lab
    [I 2024-09-23 05:38:14.628 LabApp] Extension Manager is 'pypi'.
    [I 2024-09-23 05:38:14.637 ServerApp] jupyterlab | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] notebook | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] Serving notebooks from local directory: /root
    [I 2024-09-23 05:38:14.640 ServerApp] Jupyter Server 2.14.2 is running at:
    [I 2024-09-23 05:38:14.640 ServerApp] http://6eca53b95ca2:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
    [I 2024-09-23 05:38:14.640 ServerApp]     http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
  3. Akses UI Jupyter.

    Salin http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b****** dari informasi yang dikembalikan ke bilah alamat browser untuk terhubung ke EMR Serverless Spark menggunakan Jupyter.

    Catatan
    • Jika Anda menghubungkan EMR Serverless Spark dari server jarak jauh, ganti 127.0.0.1 dengan alamat IP aktual server tersebut.

    • Jika host_port bukan 8888, ganti nomor port dengan nomor port aktual.

Langkah 3: Uji konektivitas

  1. Pada halaman JupyterLab, klik PySpark di bagian Notebook.

    image

  2. Jalankan perintah berikut untuk mengkueri semua database yang dapat diakses:

    spark.sql("show databases").show()
    

    Output seperti pada gambar berikut dikembalikan.

    image

Metode 2: Gunakan Plugin sparkmagic untuk membangun dan memulai lingkungan

Langkah 1: Buat gerbang dan token

  1. Buat dan mulai gerbang.

    1. Buka halaman Gerbang.

      1. Masuk ke Konsol EMR.

      2. Pada bilah navigasi kiri, pilih EMR Serverless > Spark.

      3. Pada halaman Spark, klik nama ruang kerja yang dituju.

      4. Pada halaman EMR Serverless Spark, klik Operation Center > Gateway di panel navigasi sebelah kiri.

    2. Klik tab Livy Gateway.

    3. Pada halaman Livy Gateway, klik Create Livy Gateway.

    4. Pada halaman Create Gateway, masukkan Name (misalnya, Livy-gateway) dan klik Create.

      Anda dapat mengonfigurasi parameter lain sesuai kebutuhan bisnis. Untuk informasi selengkapnya mengenai parameter tersebut, lihat Manajemen gerbang.

    5. Pada halaman Livy Gateway, temukan gerbang yang telah dibuat dan klik Start pada kolom Tindakan.

  2. Buat token.

    1. Pada halaman Gateway, temukan Livy-gateway dan klik Token Management pada kolom Tindakan.

    2. Klik Create Token.

    3. Pada kotak dialog Create Token, masukkan Name (misalnya, Livy-token) dan klik OK.

    4. Salin token tersebut.

      Penting

      Setelah token dibuat, Anda harus segera menyalinnya. Token tidak dapat dilihat lagi setelah Anda meninggalkan halaman tersebut. Jika token kedaluwarsa atau hilang, atur ulang token atau buat token baru.

Langkah 2: Instal dan aktifkan Plugin sparkmagic

  1. Jalankan perintah berikut untuk menginstal Plugin sparkmagic:

    pip install sparkmagic
  2. Aktifkan Plugin sparkmagic berdasarkan lingkungan Jupyter yang Anda gunakan.

    • Jika Anda menggunakan Jupyter Notebook, jalankan perintah berikut:

      jupyter nbextension enable --py --sys-prefix widgetsnbextension
    • Jika Anda menggunakan JupyterLab, jalankan perintah berikut:

      jupyter labextension install "@jupyter-widgets/jupyterlab-manager"

Untuk informasi selengkapnya mengenai Plugin sparkmagic, lihat sparkmagic.

Langkah 3: Konfigurasikan dan mulai sesi Spark

  1. Akses UI Jupyter. Untuk informasi selengkapnya, lihat JupyterLab.

  2. Impor Plugin sparkmagic.

    %load_ext sparkmagic.magics
  3. Ubah konfigurasi startup sesi.

    1. Perpanjang periode timeout startup untuk mencegah kegagalan akibat penundaan penjadwalan sumber daya.

      import sparkmagic.utils.configuration as conf
      conf.override("livy_session_startup_timeout_seconds", 1000)
      
    2. (Opsional) Sesuaikan konfigurasi sumber daya Spark.

      Anda dapat menambahkan parameter seperti ttl dan conf. Untuk informasi selengkapnya, lihat Livy Docs - REST API.

      Contoh konfigurasi berikut menunjukkan cara mengubah konfigurasi sumber daya driver.

      %% spark config
      {
         "conf": {
             "spark.driver.cores": "1",
             "spark.driver.memory": "7g"
         }
      }
      
  4. Buat sesi.

    Buat sesi Spark di Jupyter Notebook menggunakan Python atau Scala sesuai kebutuhan bisnis Anda.

    %spark add -s <session_name> -l python -u https://<endpoint> -a username -p <token>
    %spark add -s <session_name> -l scala -u https://<endpoint> -a username -p <token>

    Anda dapat mengganti informasi berikut sesuai situasi aktual Anda.

    Parameter

    Deskripsi

    <session_name>

    Nama sesi Spark. Anda dapat menentukan nama kustom.

    <endpoint>

    Public Endpoint atau Internal Endpoint yang Anda peroleh pada tab Overview.

    Jika Anda menggunakan titik akhir internal, pastikan mesin tempat Jupyter dijalankan dan gerbang Livy ditempatkan di wilayah yang sama, serta ganti https:// menjadi http:// untuk titik akhir internal.

    <token>

    Token yang telah Anda salin pada Langkah 1.

    Gambar berikut menunjukkan output saat Anda membuat sesi Spark menggunakan Python.

    image

    Tunggu selama 1 hingga 5 menit hingga status idle muncul pada kolom State. Hal ini menunjukkan bahwa sesi telah dibuat dan siap digunakan. Detail sesi akan ditampilkan pada UI. Selanjutnya, Anda dapat menggunakan PySpark untuk pengembangan interaktif. Anda juga dapat masuk ke konsol EMR Serverless Spark dan melihat informasi sesi pada tab Sessions gerbang Livy.

  5. Verifikasi sesi.

    Setelah sesi dibuat, Anda dapat menggunakan %%spark untuk menjalankan kode. Misalnya, jalankan kode berikut untuk melihat semua database di lingkungan Spark saat ini.

    %%spark
    spark.sql("show databases").show()
    

    Output seperti pada gambar berikut dikembalikan.

    image

(Opsional) Langkah 4: Lepaskan sumber daya sesi

  • Lepaskan sumber daya sesi secara otomatis.

    Jika sesi yang dibuat tidak aktif selama dua jam, sesi tersebut akan dihentikan secara otomatis.

  • Lepaskan sumber daya sesi secara manual.

    • Lepaskan sumber daya sesi menggunakan Plugin sparkmagic.

      %spark delete -s <session_name>
    • Lepaskan sumber daya sesi di konsol EMR Serverless Spark.

      Pada tab Sessions gerbang Livy, temukan sesi yang telah dibuat dan klik Close pada kolom Tindakan.

      image