適用於 Python 開發人員的 Azure Databricks
本節提供使用 Python 語言在 Azure Databricks 中開發筆記本和作業的指南,包括常見工作流程和工作的教學課程,以及 API、連結庫和工具的連結。
開始進行之前:
- 匯入程式碼:從檔案或 Git 存放庫匯入您自己的程式碼,或嘗試下列教學課程。 Databricks 建議使用互動式 Databricks Notebooks 學習。
- 在叢集上執行程式碼:建立您自己的叢集,或確保您擁有使用共用叢集的權限。 將筆記本連結至叢集,然後執行筆記本。
- 然後您可以:
- 使用 Apache Spark 處理較大的資料集
- 新增視覺效果
- 將工作負載自動化為工作
- 使用機器學習來分析您的資料
- 以整合式開發環境 (IDE) 開發
教學課程
下列教學課程提供範例程式碼和筆記本,有助了解一般工作流程。 如需將筆記本範例匯入工作區中的指示,請參閱匯入筆記本。
資料工程
- 教學課程:使用 Apache Spark DataFrame 載入和轉換資料提供逐步解說,可協助您了解 Apache Spark DataFrame,以進行資料準備和分析。
- 教學課程:Delta Lake。
- 教學課程:執行您的第一個差異即時資料表管線。
資料科學和機器學習
- 開始使用 Apache Spark DataFrame 進行資料準備和分析:教學課程:使用 Apache Spark DataFrame 載入和轉換資料
- 教學課程:Azure Databricks 上的端對端 ML 模型。 如需其他範例,請參閱教學課程:開始使用 AI 和機器學習以及 MLflow 指南:Python 快速入門。
- AutoML 可讓您在自己的數據集上快速開始開發機器學習模型。 其明箱方法會產生具有完整機器學習工作流程的筆記本,您可以複製、修改及重新執行。
- 在 Unity Catalog 中管理模型生命週期
- 教學課程:Azure Databricks 上的端對端 ML 模型
在 Python Notebooks 中偵錯
範例筆記本說明如何在 Databricks Notebooks 中使用 Python 偵錯工具 (pdb)。 若要使用 Python 偵錯工具,您必須執行 Databricks Runtime 11.3 LTS 或更新版本。
藉助 Databricks Runtime 12.2 LTS 和更新版本,您可以使用變數總管來追蹤筆記本 UI 中 Python 變數的目前值。 您可以在逐步執行中斷點時,使用變數總管來觀察 Python 變數的值。
Python 偵錯工具範例筆記本
注意
IPython 不支援 breakpoint()
,因此無法在 Databricks Notebooks 中運作。 您可以使用 import pdb; pdb.set_trace()
,而不是 breakpoint()
。
Python API
在 Databricks 外部執行的 Python 程式碼通常可以在 Databricks 內執行,反之亦然。 如果您有現有的程式碼,只要將其匯入 Databricks 即可開始使用。 如需詳細資料,請參閱下文的使用筆記本和 Databricks Git 資料夾管理程式碼。
Databricks 可以執行單一電腦和分散式 Python 工作負載。 針對單一電腦計算,您可以像往常一樣使用 Python API 和程式庫;例如,Pandas 和 Scikit-learn 將會「正常運作」。 針對分散式 Python 工作負載,Databricks 提供兩個現成可用的熱門 API:PySpark 和 Spark 上的 Pandas API。
PySpark API
PySpark 是一款官方產品,即適用於 Apache Spark 的 Python API,結合了 Python 和 Apache Spark 的強大功能。 PySpark 比 Spark 上的 Pandas API 具更多的彈性,並可針對 Spark SQL、結構化串流、MLLib 和 GraphX 等資料科學和工程功能提供廣泛的支援和功能。
Spark 上的 Pandas API
注意
Koalas 開放原始碼專案現在建議切換為 Spark 上的 Pandas API。 Spark 上的 Pandas API 適用於執行 Databricks Runtime 10.0 (EoS) 和更新版本的叢集。 針對執行 Databricks Runtime 9.1 LTS 和更低版本的叢集,請改用 Koalas。
Pandas 是資料科學家通常用於資料分析和操作的 Python 套件。 不過,Pandas 不會向外延展至巨量資料。 Spark 上的 Pandas API 會透過提供可在 Apache Spark 上運作的 Pandas 對等 API 來填補此空白。 此開放原始碼 API 是熟悉 Pandas 但不熟悉 Apache Spark 的資料科學家的理想選擇。
使用筆記本和 Databricks Git 資料夾管理程式碼
Databricks Notebooks 支援 Python。 這些筆記本提供與 Jupyter 類似的功能,但具有新增功能,例如使用巨量資料進行內建視覺效果、用於偵錯和效能監控的 Apache Spark 整合,以及用於追蹤機器學習實驗的 MLflow 整合。 透過匯入筆記本開始。 擁有叢集存取權之後,您就可以將筆記本連結至叢集並執行筆記本。
提示
若要完全重設筆記本的狀態,重新啟動 IPython 核心程序可能會很有用。 針對 Jupyter 使用者,Jupyter 中的 [重新啟動核心] 選項會對應至 Databricks 中的 [中斷連結並重新連結筆記本]。 若要在 Python 筆記本中重新啟動核心,請按下筆記本工具列中的 [計算選取器],並將滑鼠停留在清單中的已連結叢集或 SQL 倉儲上方,以顯示側邊功能表。 選取 [中斷連結並重新連結]。 這會中斷筆記本與叢集的連結並重新連結,進而重新啟動 Python 程序。
Databricks Git 資料夾可讓使用者同步處理筆記本和其他使用 Git 存放庫的檔案。 Databricks Git 資料夾有助於程式碼版本設定和共同作業,並可簡化將完整的程式碼存放庫匯入 Azure Databricks、檢視過去的筆記本版本以及整合 IDE 開發等流程。 從複製遠端 Git 存放庫開始著手。 然後,您可以使用存放庫複製來開啟或建立筆記本、將筆記本連結至叢集,以及執行筆記本。
叢集和程式庫
Azure Databricks 計算可為任何大小的叢集提供計算管理:從單一節點叢集到大型叢集。 您可以根據需求自訂叢集硬體和程式庫。 資料科學家通常會透過建立叢集或使用現有的共用叢集開始工作。 擁有叢集存取權之後,您就可以將筆記本連結至叢集,或在叢集上執行工作。
Azure Databricks 叢集使用 Databricks Runtime,其提供許多現成可用的熱門程式庫,包括 Apache Spark、Delta Lake、Pandas 等等。 您也可以安裝額外的協力廠商或自訂 Python 程式庫,以搭配使用筆記本和工作。
- 從 Databricks Runtime 版本資訊版本和相容性中的預設程式庫開始。 針對機器學習工作負載,使用適用於 Machine Learning 的 Databricks Runtime。 如需預先安裝的程式庫的完整清單,請參閱 Databricks Runtime 版本資訊版本和相容性。
- 使用筆記本範圍的 Python 程式庫自訂環境,可讓您使用來自 PyPI 或其他存放庫的程式庫來修改筆記本或工作環境。
%pip install my_library
magic 命令會將my_library
安裝到您目前連結的叢集中的所有節點,但不會干擾共用叢集上的其他工作負載。 - 視需要將非 Python 程式庫安裝為叢集程式庫。
- 如需詳細資料,請參閱程式庫。
視覺效果
Azure Databricks Python Notebooks 具有對許多類型的視覺效果的內建支援。 您也可以使用舊版視覺效果。
您也可以使用協力廠商程式庫視覺化資料;有些已預先安裝在 Databricks Runtime 中,不過您也可以安裝自訂程式庫。 熱門選項包括:
工作
您可在 Azure Databricks 中將 Python 工作負載自動化為排程或觸發工作。 工作可以執行筆記本、Python 指令碼和 Python Wheel 檔案。
- 使用 Databricks UI 或 Databricks REST API 建立和更新作業。
- Databricks Python SDK 可讓您以程式設計方式建立、編輯和刪除作業。
- Databricks CLI 為自動化工作提供方便的命令列介面。
提示
若要排程 Python 指令碼而非筆記本,請使用建立工作要求本文中的 tasks
底下的 spark_python_task
欄位。
機器學習服務
Databricks 支援各種不同的機器學習 (ML) 工作負載,包括表格式資料的傳統 ML、電腦視覺的深度學習和自然語言處理、建議系統、圖表分析等等。 如需有關 Databricks 上機器學習的一般資訊,請參閱 Databricks 上的 AI 和機器學習。
針對 ML 演算法,您可以使用在適用於機器學習的 Databricks Runtime 中預先安裝的程式庫,其中包括熱門的 Python 工具,例如 Scikit-learn、TensorFlow、Keras、PyTorch、Apache Spark MLlib 和 XGBoost。 您也可以安裝自訂程式庫。
針對機器學習作業 (MLOps),Azure Databricks 會為開放原始碼程式庫 MLflow 提供受管理的服務。 透過 MLflow 追蹤,您可以記錄模型開發,並以可重複使用的格式儲存模型。 您可以使用 MLflow 模型登錄來管理和自動化模型升階,進入生產。 工作和模型服務允許將模型託管為批次和串流工作,以及托管為 REST 端點。 如需詳細資訊和範例,請參閱使用 MLflow 的 ML 生命週期管理或 MLflow Python API DOC。
要開始使用常見的機器學習工作負載,請參閱下列頁面:
- 使用 MLflow 訓練 Scikit-learn 和追蹤:10 分鐘的教學課程:使用 Scikit-learn 在 Databricks 上進行機器學習
- 訓練深度學習模型:深度學習
- 超參數微調:平行處理 Hyperopt 超參數微調
- 圖形分析:如何在 Azure Databricks 上使用 GraphFrames
整合式開發環境 (IDE)、開發人員工具與 SDK
除了在 Azure Databricks Notebooks 中開發 Python 程式碼之外,您還可以使用 PyCharm、Jupyter 和 Visual Studio Code 等整合式開發環境 (IDE) 進行外部開發。 若要同步處理外部開發環境與 Databricks 之間的運作,有幾個可用選項:
- 程式碼:您可以使用 Git 同步處理程式碼。 請參閱 Databricks Git 資料夾的 Git 整合。
- 程式庫和工作:您可以在外部建立程式庫 (例如 Python Wheel 檔案),並將其上傳至 Databricks。 這些程式庫可以在 Databricks Notebooks 中匯入,或可用來建立工作。 請參閱程式庫和排程及協調工作流程。
- 遠端電腦執行:您可以從本機 IDE 執行程式碼,以進行互動式開發與測試。 整合式開發環境 (IDE) 可以與 Azure Databricks 通訊,以在 Azure Databricks 叢集上執行 Apache Spark 和大型計算。 請參閱 Databricks Connect。
Databricks 提供一組 SDK,包括 Python SDK,可支援自動化並與外部工具整合。 您可以使用 Databricks SDK 來管理資源,例如叢集和程式庫、程式碼和其他工作區物件、工作負載和工作等等。 請參閱 Databricks SDK。
如需 IDE、開發人員工具和 SDK 的詳細資訊,請參閱 開發人員工具。
其他資源
Databricks 學院提供許多主題的自學型和講師指導型課程。
Databricks Labs 提供 Databricks 中 Python 開發的工具,例如 pytest 外掛程式 和 pylint 外掛程式。
支援 PySpark 與 pandas 之間互操作性的功能包括下列各項:
Python 和 SQL 資料庫連線工具包括:
- 適用於 Python 的 Databricks SQL 連接器可讓您使用 Python 程式碼在 Azure Databricks 資源上執行 SQL 命令。
- pyodbc 可讓您透過 ODBC 從本機 Python 程式碼連線至儲存在 Databricks Lakehouse 中的資料。
如需將 Python 工作負載移至 Databricks 的常見問題和秘訣,請參閱 Databricks 知識庫