Bekerja dengan modul Python dan R
Artikel ini menjelaskan cara menggunakan jalur relatif untuk mengimpor modul Python dan R kustom yang disimpan dalam file ruang kerja bersama buku catatan Databricks Anda. File ruang kerja dapat memfasilitasi siklus hidup pengembangan yang lebih ketat, memungkinkan Anda memodulasi kode Anda, mengonversi %run perintah untuk mengimpor pernyataan, dan merefaktor file roda Python ke modul versi bersama. Anda juga dapat menggunakan terminal web Databricks bawaan untuk menguji kode Anda.
Catatan
Dalam Databricks Runtime 14.0 ke atas, direktori kerja default saat ini (CWD) untuk kode yang dijalankan secara lokal adalah direktori yang berisi notebook atau skrip yang dijalankan. Ini adalah perubahan perilaku dari Databricks Runtime 13.3 LTS dan di bawahnya. Lihat Apa direktori kerja default saat ini?.
Mengimpor modul Python dan R
Penting
Dalam Databricks Runtime 13.3 LTS ke atas, direktori yang ditambahkan ke Python sys.path
, atau direktori yang disusun sebagai paket Python, secara otomatis didistribusikan ke semua pelaksana dalam kluster. Di Databricks Runtime 12.2 LTS dan di bawahnya, pustaka yang sys.path
ditambahkan ke harus diinstal secara eksplisit pada pelaksana.
Di Databricks Runtime 11.3 LTS ke atas, direktori kerja notebook Anda saat ini secara otomatis ditambahkan ke jalur Python. Jika Anda menggunakan folder Git, direktori repositori akar ditambahkan.
Untuk mengimpor modul dari direktori lain, Anda harus menambahkan direktori yang berisi modul ke sys.path
. Anda dapat menentukan direktori menggunakan jalur relatif, seperti dalam contoh berikut:
import sys
import os
sys.path.append(os.path.abspath('..'))
Anda mengimpor fungsi dari modul yang disimpan dalam file ruang kerja seperti yang Anda lakukan dari modul yang disimpan sebagai pustaka kluster atau pustaka cakupan buku catatan:
Python
from sample import power
power.powerOfTwo(3)
R
source("sample.R")
power.powerOfTwo(3)
Penting
Saat Anda menggunakan import
pernyataan dan beberapa pustaka dengan nama yang sama, Databricks menggunakan aturan prioritas untuk menentukan pustaka mana yang akan dimuat. Lihat Prioritas pustaka Python.
Pemuatan ulang otomatis untuk modul Python
Jika Anda mengedit beberapa file saat mengembangkan kode Python, Anda dapat mengaktifkan ekstensi untuk memuat ulang modul yang diimpor secara otomatis sehingga perintah berjalan mengambil pengeditan tersebut autoreload
. Gunakan perintah berikut di sel buku catatan atau file Python untuk mengaktifkan autoreload
ekstensi:
%load_ext autoreload
%autoreload 2
autoreload
Ekstensi hanya berfungsi dalam proses driver Spark dan tidak memuat ulang kode ke dalam proses pelaksana Spark. Karena hanya berfungsi pada simpul driver Spark dan bukan simpul yang menjalankan eksekutor Spark, Anda tidak boleh menggunakan autoreload
saat mengembangkan modul yang berjalan pada simpul pekerja (misalnya, UDF).
Di Databricks Runtime 16.0 ke atas, autoreload
ekstensi di Databricks menambahkan fitur berikut:
- Dukungan untuk pemuatan ulang modul yang ditargetkan untuk modifikasi internal ke fungsi. Memuat ulang hanya bagian modul yang diubah jika memungkinkan memastikan bahwa hanya ada satu instans yang terlihat secara eksternal dari setiap objek, yang lebih aman dan lebih dapat diandalkan.
- Saat Anda mengimpor modul Python dari file ruang kerja, Databricks secara otomatis menyarankan penggunaan
autoreload
jika modul telah berubah sejak impor terakhirnya.
Untuk mempelajari selengkapnya tentang autoreload
ekstensi, lihat dokumentasi autoreload IPython.
Kode refaktor
Praktik terbaik untuk pengembangan kode adalah memodulasi kode sehingga dapat dengan mudah digunakan kembali. Anda dapat membuat file Python kustom dengan file ruang kerja dan membuat kode dalam file tersebut tersedia untuk buku catatan menggunakan pernyataan .import
Untuk merefaktor ulang kode buku catatan menjadi file yang dapat digunakan kembali:
- Buat file kode sumber baru untuk kode Anda.
- Tambahkan pernyataan impor Python ke buku catatan untuk membuat kode di file baru Anda yang tersedia untuk buku catatan.
Melakukan migrasi dari %run
perintah
Jika Anda menggunakan %run
perintah untuk membuat fungsi Python atau R yang ditentukan dalam buku catatan tersedia untuk buku catatan lain, atau menginstal file kustom .whl
pada kluster, pertimbangkan untuk menyertakan modul kustom tersebut sebagai file ruang kerja. Dengan cara ini, Anda dapat menjaga buku catatan dan modul kode lainnya tetap sinkron, memastikan bahwa buku catatan Anda selalu menggunakan versi yang benar.
%run
perintah memungkinkan Anda menyertakan satu buku catatan di buku catatan lain dan sering digunakan untuk membuat kode Python atau R pendukung tersedia untuk buku catatan. Dalam contoh ini, buku catatan bernama power.py
menyertakan kode di bawah ini.
# This code is in a notebook named "power.py".
def n_to_mth(n,m):
print(n, "to the", m, "th power is", n**m)
Anda kemudian dapat membuat fungsi yang ditentukan di power.py
yang tersedia untuk buku catatan lain dengan perintah %run
:
# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)
Dengan menggunakan file ruang kerja, Anda dapat langsung mengimpor modul yang berisi kode Python dan menjalankan fungsi .
from power import n_to_mth
n_to_mth(3, 4)
Merefaktor file Python .whl
ke pustaka relatif
Anda dapat memasang file .whl
kustom ke kluster dan kemudian mengimpornya ke buku catatan yang dilampirkan ke kluster tersebut. Namun, proses ini mungkin rumit dan rawan kesalahan untuk kode yang sering diperbarui. File ruang kerja memungkinkan Anda menyimpan file Python ini di direktori yang sama dengan buku catatan yang menggunakan kode, memastikan bahwa buku catatan Anda selalu menggunakan versi yang benar.
Untuk informasi selengkapnya tentang mengemas proyek Python, lihat tutorial ini.
Menggunakan terminal web Azure Databricks untuk pengujian
Anda dapat menggunakan terminal web Azure Databricks untuk menguji modifikasi pada kode Python atau R Anda tanpa menggunakan buku catatan untuk mengimpor dan menjalankan file.
- Buka terminal web.
- Ubah ke direktori:
cd /Workspace/Users/<path-to-directory>/
. - Jalankan file Python atau R:
python file_name.py
atauRscript file_name.r
.