使用 Python 和 R 模組
本文說明如何使用相對路徑,將儲存在工作區檔案中的自定義 Python 和 R 模組與 Databricks 筆記本一起匯入。 工作區檔案可協助您更緊密的開發生命週期,讓您 將程式代碼模組化、 將 %run 命令轉換為匯入語句,並將 Python 轉輪檔案重構為共同版本模組。 您也可以使用內建的 Databricks Web 終端機來測試程序代碼。
注意
在 Databricks Runtime 14.0 和更新版本中,本機執行之程式碼的預設目前工作目錄 (CWD) 是包含執行筆記本或指令碼的目錄。 這是 Databricks Runtime 13.3 LTS 和以下的行為變更。 請參閱預設的目前工作目錄是什麼?。
匯入 Python 和 R 模組
重要
在 Databricks Runtime 13.3 LTS 和更新版本中,新增至 Python 的目錄,或結構化為 Python sys.path
套件的目錄,會自動散發至叢集中的所有執行程式。 在 Databricks Runtime 12.2 LTS 中,新增至 sys.path
的連結庫必須明確安裝在執行程式上。
在 Databricks Runtime 11.3 LTS 和更新版本中,筆記本的目前工作目錄會自動新增至 Python 路徑。 如果您使用 Git 資料夾,則會新增根存放庫目錄。
若要從另一個目錄匯入模組,您必須將包含模組的目錄新增至 sys.path
。 您可以使用相對路徑指定目錄,如下列範例所示:
import sys
import os
sys.path.append(os.path.abspath('..'))
您可以從儲存在工作區檔案中的模組匯入函式,就像從儲存為叢集連結庫或筆記本範圍連結庫的模組一樣:
Python
from sample import power
power.powerOfTwo(3)
R
source("sample.R")
power.powerOfTwo(3)
重要
當您使用 import
語句和多個相同名稱的鏈接庫存在時,Databricks 會使用優先順序規則來判斷要載入的連結庫。 請參閱 Python 連結 庫優先順序。
自動載入 Python 模組
如果您在開發 Python 程式代碼時編輯多個檔案,您可以啟用 autoreload
延伸模組自動重載任何匯入的模組,讓命令執行會挑選這些編輯。 在任何筆記本資料格或 Python 檔案中使用下列命令來啟用 autoreload
擴充功能:
%load_ext autoreload
%autoreload 2
延伸 autoreload
模組只適用於 Spark 驅動程式進程,而且不會將程式代碼重載至 Spark 執行程式進程。 因為它只能在Spark驅動程式節點上運作,而不是執行Spark執行程式的節點,所以在開發在背景工作節點上執行的模組時,您不應該使用 autoreload
(例如 UDF)。
在 Databricks Runtime 16.0 和更新版本中, autoreload
Databricks 中的延伸模組會新增下列功能:
- 支援針對模組進行目標重載,以修改函式內部。 只要盡可能重載模組的變更部分,可確保每個物件只有一個外部可見的實例,這更安全且更可靠。
- 當您從工作區檔案匯入 Python 模組時,如果模組自上次匯入後已變更,Databricks 會自動建議使用
autoreload
。
若要深入瞭解延伸 autoreload
模組,請參閱 IPython 自動載入檔。
重構程式碼
程式代碼開發的最佳做法是將程式代碼模組化,以便輕鬆地重複使用。 您可以使用 工作區檔案建立自定義 Python 檔案,並使用 語句,讓這些檔案中的程式代碼可供筆記本使用 import
。
若要將筆記本程式代碼重構為可重複使用的檔案:
- 為您的程式代碼建立新的原始碼檔案。
- 將 Python 匯入語句新增至筆記本,讓新檔案中的程式代碼可供筆記本使用。
從命令移轉%run
如果您使用 %run
命令讓筆記本中定義的 Python 或 R 函式可供另一個筆記本使用,或是在叢集上安裝自定義 .whl
檔案,請考慮將這些自定義模組納入工作區檔案。 如此一來,您就可以讓筆記本和其他程式代碼模組保持同步,確保筆記本一律使用正確的版本。
%run
命令可讓您將一個筆記本包含在另一個筆記本中,而且通常用來讓筆記本使用支援的 Python 或 R 程式代碼。 在此範例中,名為 power.py
的筆記本包含下列程序代碼。
# 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)
接著,您可以使用 命令,讓定義於 power.py
中的函式可供不同的筆記本使用 %run
:
# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)
使用工作區檔案,您可以直接匯入包含 Python 程式代碼並執行函式的模組。
from power import n_to_mth
n_to_mth(3, 4)
將 Python .whl
檔案重構至相對連結庫
您可以將自定義 .whl
檔案安裝到叢集,然後將它們匯入連結至該叢集的筆記本。 不過,對於經常更新的程序代碼,此程式可能很麻煩且容易出錯。 工作區檔案可讓您將這些 Python 檔案保留在與使用程式代碼的筆記本相同的目錄中,以確保您的筆記本一律使用正確的版本。
如需封裝 Python 專案的詳細資訊,請參閱本教學 課程。
使用 Azure Databricks Web 終端機進行測試
您可以使用 Azure Databricks Web 終端機來測試 Python 或 R 程式代碼的修改,而不需使用筆記本匯入和執行檔案。
- 開啟 Web 終端機。
- 變更為 目錄:
cd /Workspace/Users/<path-to-directory>/
。 - 執行 Python 或 R 檔案:
python file_name.py
或Rscript file_name.r
。