適用於 R 開發人員的 Azure Databricks

本節提供使用 R 語言在 Azure Databricks 中開發筆記本和作業的指南。

開始使用的基本工作流程如下:

  1. 匯入程式代碼:從檔案或 Git 存放庫匯入您自己的程式代碼,或嘗試下列教學課程。 Databricks 建議學習使用互動式 Azure Databricks 筆記本。
  2. 在叢集上執行程序代碼:建立您自己的叢集,或確保您有權使用共用叢集。 將筆記本附加至叢集,然後執行筆記本。

除此之外,您可以分支到更具體的主題:

教學課程

下列教學課程提供範例程式代碼和筆記本,以了解常見的工作流程。 如需將筆記本範例匯入工作區中的指示,請參閱 匯入筆記本

參考

下列小節列出主要功能和秘訣,以協助您開始使用 R 在 Azure Databricks 中開發。

Azure Databricks 支援兩個 API,可為 Apache Spark 提供 R 介面: SparkRsparklyr

SparkR

這些文章提供SparkR簡介和參考。 SparkR 是 Apache Spark 的 R 介面,可提供分散式數據框架實作。 SparkR 支援選取、篩選和匯總等作業(類似於 R 數據框架),但在大型數據集上。

sparklyr

本文提供sparklyr簡介。 sparklyr 是 Apache Spark 的 R 介面,可提供類似 dplyrbroomDBI 的功能。

比較 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 Compute 可為單一節點和大型叢集提供計算管理。 您可以根據您的需求自訂叢集硬體和連結庫。 數據科學家通常會藉由建立叢集或使用現有的共用叢集開始工作。 存取叢集之後,您可以將 筆記本 附加至叢集,或在 叢集上執行作業

單一節點 R 和分散式 R

Azure Databricks 叢集是由 Apache Spark 驅動程式節點和零個或多個 Spark 背景工作角色(也稱為執行程式)節點所組成。 驅動程式節點會維護附加的筆記本狀態、維護 SparkContext、解譯筆記本和連結庫命令,以及執行與Spark執行程式協調的Spark主機。 背景工作節點會執行 Spark 執行程式,每個背景工作節點執行一個 Spark 執行程式。

單一 節點 叢集有一個驅動程序節點且沒有背景工作節點,Spark 在本機模式中執行,以支援存取 Azure Databricks 所管理的數據表。 單一節點叢集支援 RStudio、Notebook 和連結庫,對於不依賴 Spark 進行巨量數據或平行處理的 R 專案很有用。 請參閱 單一節點或多節點計算

對於 R 難以處理的數據大小(許多 GB 或 PB),您應該改用多個節點或 分散式 叢集。 分散式叢集有一個驅動程序節點和一或多個背景工作節點。 分散式叢集不僅支援 RStudio、Notebook 和連結庫,而且支援 SparkR 和 sparkly 等 R 套件,這些套件是專為透過 SparkContext使用分散式叢集而設計的。 這些套件提供熟悉的 SQL 和 DataFrame API,可跨背景工作節點平行指派和執行各種 Spark 工作和命令。 若要深入瞭解 sparklyr 和 SparkR,請參閱 比較 SparkR 和 sparklyr

某些 SparkR 和 sparklyr 函式會特別利用跨背景工作節點散發相關工作,包括下列各項:

  • sparklyr::spark_apply:在叢集中大規模執行任意 R 程序代碼。 這特別適用於使用僅適用於 R 的功能,或 Apache Spark 和其他 Spark 套件中無法使用的 R 套件。
  • SparkR::d apply:將指定的函式套用至 的每個分割區 SparkDataFrame
  • SparkR::d applyCollect:將指定的函式套用至 的每個 SparkDataFrame 分割區,並將結果收集回 R 做為 data.frame
  • SparkR::gapply:使用指定的數據行將 群組, SparkDataFrame 並將指定的 R 函式套用至每個群組。
  • SparkR::gapplyCollect:使用指定的數據行,將 SparkDataFrame 指定的 R 函式套用至每個群組,並將結果收集回 R 作為 data.frame
  • SparkR::spark.lapply:在元素清單上執行指定的函式,使用Spark散發計算。

如需範例,請參閱筆記本 分散式 R:Spark 中的使用者定義函式。

Databricks 容器服務

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 版本資訊版本資訊和相容性中的預設連結庫開始。 針對機器學習工作負載使用 Databricks Runtime 進行 機器學習。 如需預安裝連結庫的完整清單,請參閱 Databricks Runtime 中目標 Databricks Runtime 版本資訊版本資訊和相容性<已安裝 R 連結庫>一節。

您可以使用筆記本範圍的 R 連結庫來自定義環境,這可讓您使用來自 CRAN 或其他存放庫的連結庫來修改筆記本或作業環境。 若要這樣做,您可以從 使用熟悉 的 install.packages 函式 utils。 下列範例會 從預設 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 呼叫使用者定義函式時,此方法特別重要。

如需詳細資訊,請參閱連結

若要將 自訂套件 安裝到連結庫:

  1. 從命令行或使用 RStudio 建置您的自定義套件。

  2. 將自定義套件檔案從您的開發計算機複製到您的 Azure Databricks 工作區。 如需選項,請參閱連結

  3. 執行 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 中建立和執行 Azure Databricks 作業 ,將 R 工作負載自動化。

  • 如需透過UI建立作業的詳細資訊,請參閱 建立作業
  • 作業 API 可讓您建立、編輯和刪除作業。
  • Databricks CLI 提供方便的命令行介面來呼叫作業 API。

機器學習服務

Databricks 支援各種不同的機器學習 (ML) 工作負載,包括表格式數據的傳統 ML、計算機視覺的深度學習和自然語言處理、建議系統、圖表分析等等。 如需 Azure Databricks 上機器學習的一般資訊,請參閱 databricks Runtime for 機器學習

針對 ML 演算法,您可以在 Databricks Runtime 中針對 機器學習 使用預安裝的連結庫。 您也可以 安裝自訂連結庫

針對機器學習作業 (MLOps),Azure Databricks 會為 開放原始碼 連結庫 MLflow 提供受控服務。 透過 MLflow 追蹤 ,您可以記錄模型開發,並以可重複使用的格式儲存模型。 您可以使用 MLflow 模型登錄 來管理模型,並將模型升階至生產環境自動化。 作業模型服務 允許將模型裝載為批次和串流作業作為 REST 端點。 如需詳細資訊和範例,請參閱使用 MLflow 或 MLflow R API 的 ML 生命週期管理檔。

R 開發人員工具

除了 Azure Databricks Notebook 之外,您也可以使用下列 R 開發人員工具:

R 工作階段自定義

在 Databricks Runtime 12.2 LTS 和更新版本中,您可以使用全月臺配置檔 (.Rprofile) 檔案來自定義 R 工作階段。 R Notebook 會在啟動期間將檔案來源為 R 程序代碼。 若要修改檔案,請尋找的值 R_HOME 並修改 $R_HOME/etc/Rprofile.site。 請注意,Databricks 已在檔案中新增組態,以確保 Azure Databricks 上裝載 RStudio 的適當功能。 拿掉其中任何一項可能會導致 RStudio 無法如預期般運作。

在 Databricks Runtime 11.3 LTS 和以下版本中,您可以藉由設定環境變數 DATABRICKS_ENABLE_RPROFILE=true來啟用此行為。

其他資源