適用於 R 開發人員的 Azure Databricks
本節提供使用 R 語言在 Azure Databricks 中開發筆記本和工作的指南。
使用者入門的基本工作流程如下:
- 匯入程式碼:從檔案或 Git 存放庫匯入您自己的程式碼,或嘗試下列教學課程。 Databricks 建議學習使用互動式 Azure Databricks 筆記本。
- 在叢集上執行程式碼:建立您自己的叢集,或確保您擁有使用共用叢集的權限。 將筆記本連結至叢集,然後執行筆記本。
除此之外,您可以延伸至更具體的主題:
- 使用 Apache Spark 處理較大的資料集
- 新增視覺效果
- 將工作負載自動化為工作
- 使用機器學習來分析您的資料
- 使用 R 開發人員工具
教學課程
下列教學課程提供範例程式碼和筆記本,有助瞭解一般工作流程。 如需將筆記本範例匯入工作區中的指示,請參閱匯入筆記本。
參考
下列小節列出主要功能和提示,以協助您開始使用 R 在 Azure Databricks 中進行開發。
Azure Databricks 支援兩個 API,可為 Apache Spark 提供 R 介面:SparkR 和 sparklyr。
SparkR
這些文章提供 SparkR 的簡介和參考。 SparkR 是 Apache Spark 的 R 介面,可提供分散式資料框架實作。 SparkR 支援諸如選取、篩選和彙總等操作 (類似於 R 資料框架),但適用於大型資料集。
sparklyr
本文提供 sparklyr 簡介。 sparklyr 是 Apache Spark 的 R 介面,可提供類似 dplyr、broom
和 DBI 的功能。
比較 SparkR 和 sparklyr
本文說明 SparkR 與 sparklyr 之間的主要相似性和差異。
使用 SparkR 和 sparklyr 處理 DataFrame 和資料表
本文說明如何使用 R、SparkR、sparklyr 和 dplyr 來處理 Azure Databricks 中的 R data.frames、Spark DataFrames 和 Spark 資料表。
使用筆記本和 Databricks Git 資料夾管理程式碼
Azure Databricks 筆記本支援 R。這些筆記本提供與 Jupyter 類似的功能,但具有新增功能,例如使用巨量資料的內建視覺效果、用於偵錯和效能監控的 Apache Spark 整合,以及用於追蹤機器學習實驗的 MLflow 整合。 透過匯入筆記本開始。 擁有叢集存取權之後,您就可以將筆記本連結至叢集並執行筆記本。
Azure Databricks Git 資料夾可讓使用者同步處理筆記本和其他使用 Git 存放庫的檔案。 Azure Databricks Git 資料夾有助於程式碼版本設定和共同作業,並可簡化將完整的程式碼存放庫匯入 Azure Databricks、檢視過去的筆記本版本以及整合 IDE 開發等流程。 從複製遠端 Git 存放庫開始著手。 然後,您可以使用存放庫複製來開啟或建立筆記本、將筆記本連結至叢集,以及執行筆記本。
叢集
Azure Databricks 計算可為單一節點和大型叢集提供計算管理。 您可以根據需求自訂叢集硬體和程式庫。 資料科學家通常會透過建立叢集或使用現有的共用叢集開始工作。 擁有叢集存取權之後,您就可以將筆記本連結至叢集,或在叢集上執行工作。
單一節點 R 和分散式 R
Azure Databricks 叢集是由 Apache Spark 驅動程式節點和零個或多個 Spark 背景工作角色 (也稱為執行程式) 節點所組成。 驅動程式節點會維護連結的筆記本狀態、維護 SparkContext
、解譯筆記本和程式庫命令,以及執行與 Spark 執行程式協調的 Spark 主機。 背景工作角色節點會執行 Spark 執行程式,每個背景工作角色節點一個 Spark 執行程式。
單一節點叢集有一個驅動程式節點且沒有背景工作角色節點,Spark 在本機模式中執行,以支援存取 Azure Databricks 所管理的資料表。 單一節點叢集支援 RStudio、筆記本和程式庫,對於不依賴 Spark 進行巨量資料或平行處理的 R 專案很有用。 請參閱單一節點或多節點計算。
對於 R 難以處理的資料大小 (許多 GB 或 PB),應該改用多個節點或分散式叢集。 分散式叢集有一個驅動程式節點和一個或多個背景工作角色節點。 分散式叢集不僅支援 RStudio、筆記本和程式庫,而且支援 SparkR 和 sparkly 等 R 套件,它們專為透過 SparkContext
使用分散式叢集而設計。 這些套件提供熟悉的 SQL 和 DataFrame API,可跨背景工作角色節點平行指派和執行各種 Spark 任務和命令。 若要深入瞭解 sparklyr 和 SparkR,請參閱比較 SparkR 和 sparklyr。
某些 SparkR 和 sparklyr 函式會特別利用跨背景工作角色節點分配相關工作的優勢,包括下列各項:
- sparklyr::spark_apply:在叢集內大規模執行任意 R 程式碼。 這特別適用於使用僅在 R 中可用的功能,或 Apache Spark 和其他 Spark 套件中無法使用的 R 套件。
- SparkR::dapply:將指定的函式套用至
SparkDataFrame
的每個分割區。 - SparkR::dapplyCollect:將指定的函式套用至
SparkDataFrame
的每個分割區,並將結果作為data.frame
收集回 R。 - SparkR::gapply:使用指定資料行對
SparkDataFrame
分組,並將指定的 R 函式套用至每個群組。 - SparkR::gapplyCollect:使用指定資料行對
SparkDataFrame
分組,並將指定的 R 函式套用至每個群組,並將結果作為data.frame
收集回 R。 - SparkR::spark.lapply:在元素清單上執行指定的函式,使用 Spark 散發計算。
如需範例,請參閱筆記本分散式 R:Spark 中的使用者定義的函式。
Databricks Container Services
Databricks Container Services 可讓您在建立叢集時指定 Docker 映像。 Databricks 在 Docker Hub 上提供 databricksruntime/rbase 基礎映像,作為啟動具有 R 支援的 Databricks Container Services 叢集的範例。 另請參閱用來生成此基礎映像的 Dockerfile。
程式庫
Azure Databricks 叢集使用 Databricks Runtime,它提供許多熱門的現用程式庫,包括 Apache Spark、Delta Lake 等等。 也可以將額外的第三方或自訂 R 套件安裝到程式庫中,以搭配筆記本和工作使用。
從 Databricks Runtime 版本資訊版本和相容性中的預設程式庫開始。 針對機器學習工作負載,使用適用於 Machine Learning 的 Databricks Runtime。 如需預安裝的程式庫完整清單,請參閱 Databricks Runtime 版本資訊版本和相容性中目標 Databricks Runtime 的「已安裝的 R 程式庫」一節。
使用筆記本範圍的 R 程式庫來自訂環境,可讓您使用來自 CRAN 或其他存放庫的程式庫來修改筆記本或工作環境。 若要這樣做,您可以使用 utils
中熟悉的 install.packages 函式。 下列範例會從預設 CRAN 存放庫安裝 Arrow R 套件:
install.packages("arrow")
如果您需要比 Databricks Runtime 中包含的版本更舊的版本,可以使用筆記本從 devtools
中執行 install_version 函式。 下列範例會從 CRAN 中安裝 dplyr 0.7.4 版:
require(devtools)
install_version(
package = "dplyr",
version = "0.7.4",
repos = "http://cran.r-project.org"
)
以這種方式安裝的套件可跨叢集使用。 其範圍限定於安裝它們的使用者。 這可讓您在相同的計算上安裝相同套件的多個版本,而不會產生套件衝突。
您可以視需要安裝其他程式庫作為叢集程式庫,例如來自 CRAN。 因此,請在叢集使用者介面中,按一下 [程式庫 > 安裝新程式庫 > CRAN],並指定程式庫的名稱。 當您想要使用 SparkR 或 sparklyr 呼叫使用者定義的函式時,此方法特別重要。
如需詳細資料,請參閱程式庫。
若要將自訂套件安裝到程式庫:
從命令行或使用 RStudio 建置您的自訂套件。
將自訂套件檔案從您的開發機器複製到您的 Azure Databricks 工作區。 如需選項,請參閱程式庫。
透過執行
install.packages
,將自訂套件安裝至程式庫。例如,從工作區中的筆記本:
install.packages( pkgs = "/path/to/tar/file/<custom-package>.tar.gz", type = "source", repos = NULL )
或:
%sh R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
將自訂套件安裝到程式庫之後,請將程式庫新增至搜尋路徑,然後使用單一命令載入程式庫。
例如:
# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))
# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)
若要將自訂套件安裝為叢集中每個節點上的程式庫,您必須使用什麼是 init 指令碼?。
視覺效果
Azure Databricks R 筆記本使用 display
函式,支援各種視覺效果類型。
工作
您可以在 Azure Databricks 中將 R 工作負載自動化為排程或觸發工作。
- 如需有關透過 UI 建立工作的詳細資料,請參閱<設定和編輯 Databricks 工作>。
- 工作 API 可讓您建立、編輯和刪除工作。
- Databricks CLI 提供方便的命令列介面,以呼叫工作 API。
機器學習服務
Databricks 支援各種不同的機器學習 (ML) 工作負載,包括表格式資料的傳統 ML、電腦視覺的深度學習和自然語言處理、建議系統、圖表分析等等。 如需有關 Azure Databricks 上機器學習的一般資訊,請參閱 Databricks Runtime for Machine Learning。
針對 ML 演算法,您可以在 Databricks Runtime for Machine Learning 中使用預安裝的程式庫。 您也可以安裝自訂程式庫。
針對機器學習作業 (MLOps),Azure Databricks 會為開放原始碼程式庫 MLflow 提供受管理的服務。 透過 MLflow 追蹤,您可以記錄模型開發,並以可重複使用的格式儲存模型。 您可以使用 MLflow 模型登錄來管理和自動化模型升階,進入生產。 工作和模型服務允許將模型託管為批次和串流工作,以及托管為 REST 端點。 如需詳細資訊和範例,請參閱使用 MLflow 的 ML 生命週期管理或 MLflow R API 文件。
R 開發人員工具
除了 Azure Databricks 筆記本之外,也可以使用下列 R 開發人員工具:
使用 SparkR 和 RStudio Desktop 搭配 Databricks Connect。
使用 sparklyr 和 RStudio Desktop 搭配 Databricks Connect。
R 工作階段自訂
在 Databricks Runtime 12.2 LTS 和更新版本中,您可以使用站點範圍的設定檔 (.Rprofile
) 檔案來自訂 R 工作階段。 R 筆記本會在啟動期間獲取檔案作為 R 程式碼。 若要修改檔案,請尋找 R_HOME
的值並修改 $R_HOME/etc/Rprofile.site
。 請注意,Databricks 已在檔案中新增組態,以確保 Azure Databricks 上託管的 RStudio 的正常功能。 移除其中任何一項可能會導致 RStudio 無法如預期般運作。
在 Databricks Runtime 11.3 LTS 和以下版本中,可以透過設定環境變數 DATABRICKS_ENABLE_RPROFILE=true
來啟用此行為。