All Products
Search
Document Center

MaxCompute:Mode debug lokal MaxFrame

Last Updated:Apr 01, 2026

Topik ini menjelaskan fitur dan penggunaan mode debug lokal MaxFrame. Mode ini memungkinkan Anda melakukan debug fungsi UDF seperti a****() dan a**********() secara langsung di lingkungan lokal tanpa perlu terhubung ke layanan remote.

Latar Belakang

Secara tradisional, debugging fungsi UDF MaxFrame seperti apply() dan apply_chunk() memerlukan pengiriman kode ke lingkungan kluster remote. Proses ini menghambat debugging lokal, seperti menyetel breakpoint atau melakukan debugging langkah demi langkah. Akibatnya, setiap modifikasi memerlukan pengiriman ulang, dan pengembang sering harus memelihara basis kode terpisah untuk lingkungan lokal dan produksi.

Mode debug lokal MaxFrame mengatasi tantangan tersebut dengan menjalankan fungsi UDF secara langsung di lingkungan Python lokal Anda. Pendekatan ini memungkinkan debugging menggunakan breakpoint melalui IDE, berjalan sepenuhnya offline, serta memungkinkan penggunaan satu basis kode yang sama untuk debugging lokal maupun eksekusi di produksi.

Kasus Penggunaan

Skenario

Deskripsi

Pengembangan logika UDF

Debug dan verifikasi logika bisnis kompleks secara real time.

Pengujian transformasi data

Validasi aturan pembersihan dan transformasi data.

Pemecahan masalah

Identifikasi akar penyebab error eksekusi UDF.

Pengembangan offline

Lanjutkan pekerjaan pengembangan tanpa koneksi jaringan.

Fitur

Dibandingkan dengan debugging remote tradisional, mode debug lokal menawarkan keunggulan berikut:

Dimensi

Mode debug lokal

Pendekatan tradisional

Breakpoint debugging

Mendukung debugging breakpoint melalui IDE

Tidak didukung

Ketergantungan remote

Memungkinkan debugging sepenuhnya offline

Memerlukan koneksi ke lingkungan kluster remote

Siklus debug

Eksekusi lokal segera

Memerlukan pengiriman remote untuk setiap eksekusi

Basis kode

Satu basis kode

Memerlukan pemeliharaan beberapa basis kode

  • Debugging tanpa konfigurasi

    Cukup atur debug=True atau debug="local", tanpa memerlukan alat atau layanan tambahan.

    session = new_session(o, debug=True)
  • Kemampuan offline penuh

    Berfungsi tanpa koneksi jaringan atau sumber daya kluster remote.

  • Dukungan IDE Asli

    • Mendukung IDE populer seperti PyCharm dan VSCode, serta Notebook DataWorks.

    • Mempertahankan kemampuan debugging lengkap, termasuk menyetel breakpoint, mengamati variabel, dan eksekusi langkah demi langkah.

    • Pengalaman debugging identik dengan pengembangan Python native.

  • Sumber data fleksibel

    Mendukung berbagai sumber data, termasuk data dalam memori, file lokal, dan tabel MaxCompute.

    Jenis sumber data

    Metode akses

    Kasus penggunaan

    Data dalam memori

    md.DataFrame(pd.DataFrame())

    Validasi logika cepat

    Tabel MaxCompute

    md.read_odps_table()

    Pengujian dengan data riil

    File lokal

    Antarmuka data Pandas native seperti pd.read_csv()

    Pengembangan offline

  • Transisi mulus ke produksi

    Kode debug identik dengan kode produksi dan dapat langsung dideploy ke produksi setelah menghapus debug=True atau debug="local".

    # Lingkungan debug
    session = new_session(o, debug=True)
    
    # Lingkungan produksi
    session = new_session(o)

Memulai dengan Cepat

  1. Prasyarat

    pip install --upgrade maxframe # SDK MaxFrame v2.5.0 atau versi lebih baru diperlukan.
  2. Contoh dasar

    from odps import ODPS
    from maxframe import new_session
    import maxframe.dataframe as md
    import pandas as pd
    
    # Inisialisasi objek ODPS.
    o = ODPS(
        access_id='your_access_id',
        secret_access_key='your_secret_key',
        project='your_project',
        endpoint='your_endpoint'
    )
    
    # Aktifkan mode debug lokal.
    session = new_session(o, debug=True)
    
    # Siapkan data.
    df = md.DataFrame(pd.DataFrame({
        "sales": [5000, 8000, 12000, 3000],
        "region": ["A", "B", "C", "D"]
    }))
    
    def calculate_commission(row):
        sales = row['sales']
        if sales > 10000: # Anda dapat menyetel breakpoint di sini.
            rate = 0.15
            print(rate)
        elif sales > 5000: # Anda dapat menyetel breakpoint di sini.
            rate = 0.10
            print(rate)
        else:
            rate = 0.05
        return sales * rate
    
    # Eksekusi dan ambil hasilnya.
    result = df.apply(calculate_commission, axis=1).execute().fetch()

Pertimbangan

  • Perbedaan performa: Mode debug lokal dirancang untuk pengembangan dan validasi. Performanya tidak merepresentasikan lingkungan produksi.

  • Batas volume data: Gunakan dataset kecil untuk debugging.

  • Konsistensi dependensi: Pastikan versi dependensi di lingkungan Python lokal Anda sesuai dengan yang ada di lingkungan produksi.

  • Data sensitif: Saat melakukan debugging dengan tabel MaxCompute, perhatikan izin data dan mask data sensitif sesuai kebutuhan.