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=Trueataudebug="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=Trueataudebug="local".# Lingkungan debug session = new_session(o, debug=True) # Lingkungan produksi session = new_session(o)
Memulai dengan Cepat
Prasyarat
pip install --upgrade maxframe # SDK MaxFrame v2.5.0 atau versi lebih baru diperlukan.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.