Azure Databricks 上的 RStudio

您可以使用 R 的熱門整合開發環境 RStudio 來連線到 Azure Databricks 工作區內的 Azure Databricks 計算資源。 使用 RStudio Desktop 從本機開發電腦連線到 Azure Databricks 叢集SQL 倉儲 。 您也可以使用網頁瀏覽器登入 Azure Databricks 工作區,然後連線到該工作區內已安裝 RStudio Server 的 Azure Databricks 叢集

使用 RStudio Desktop 連線

使用 RStudio Desktop 從本機開發電腦連線到遠端 Azure Databricks 叢集或 SQL 倉儲。 若要在此案例中連線,請使用 ODBC 連接並呼叫 R 的 ODBC 封裝函式,本節會說明。

注意

除非您也使用 Databricks 連線,否則您無法在此 RStudio Desktop 案例中使用 SparkRsparklyr 等套件。 作為使用 RStudio Desktop 的替代方案,您可以使用網頁瀏覽器登入 Azure Databricks 工作區,然後連線到該工作區中已安裝 RStudio Server 的 Azure Databricks 叢集

若要在本機開發計算機上設定 RStudio Desktop:

  1. 下載並安裝 R 3.3.0 或更高版本
  2. 下載並安裝 RStudio Desktop
  3. 啟動 RStudio Desktop。

(選擇性)若要建立 RStudio 專案:

  1. 啟動 RStudio Desktop。
  2. 按兩下 [ 檔案 > 新專案]。
  3. 選取 [ 新增目錄 > 新專案]。
  4. 選擇專案的新目錄,然後按兩下 [ 建立專案]。

若要建立 R 文稿:

  1. 開啟專案后,按兩下 [檔案新檔案 > R 腳稿>]。
  2. 按兩下 [ 檔案 > 另存新檔]。
  3. 將檔案命名為 ,然後按兩下 [ 儲存]。

若要透過 ODBC for R 連線到遠端 Azure Databricks 叢集或 SQL 倉儲:

  1. 取得遠端叢集SQL 倉儲的伺服器主機名HTTP 路徑值。 針對叢集,這些值位於 [進階選項] 的 [JDBC/ODBC] 索引卷標上。 對於 SQL 倉儲,這些值位於 [連線 詳細數據] 索引標籤上

  2. 取得 Azure Databricks 個人存取令牌

    注意

    作為安全性最佳做法,當您使用自動化工具、系統、腳本和應用程式進行驗證時,Databricks 建議您使用屬於 服務主體 的個人存取令牌,而不是工作區使用者。 若要建立服務主體的令牌,請參閱 管理服務主體的令牌。

  3. 根據本機計算機的作業系統,安裝及設定適用於 WindowsmacOSLinux 的 Databricks ODBC 驅動程式。

  4. 根據本機計算機的作業系統,將 ODBC 數據源名稱 (DSN) 設定為適用於 WindowsmacOS 或 Linux 的遠端叢集或 SQL 倉儲。

  5. 從 RStudio 控制台 (檢視>焦點移至主控台),從 CRAN 安裝 odbcDBI 套件:

    require(devtools)
    
    install_version(
      package = "odbc",
      repos   = "http://cran.us.r-project.org"
    )
    
    install_version(
      package = "DBI",
      repos   = "http://cran.us.r-project.org"
    )
    
  6. 回到 R 文稿(檢視 > 將焦點移至來源),載入已安裝 odbc 的 和 DBI 套件:

    library(odbc)
    library(DBI)
    
  7. 在封裝中DBI呼叫 db 連線 函式的 ODBC 版本,odbc指定封裝中的odbc驅動程式,以及您建立的 ODBC DSN,例如 的 ODBC DSNDatabricks

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. 透過 ODBC DSN 呼叫作業,例如SELECT透過封裝中的 DBI dbGetQuery 函式的 語句,指定連接變數的名稱和SELECT語句本身,例如,從名為 的架構 (database) 中名為 diamondsdefault的數據表呼叫 :

    print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))
    

完整的 R 文稿如下所示:

library(odbc)
library(DBI)

conn = dbConnect(
  drv = odbc(),
  dsn = "Databricks"
)

print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))

若要執行腳本,請在來源檢視中,按兩下 [來源]。 上述 R 文稿的結果如下所示:

  _c0 carat     cut color clarity depth table price    x    y    z
1   1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2   2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31

使用 RStudio Server 連線

使用網頁瀏覽器登入您的 Azure Databricks 工作區,然後連線到該工作區內已安裝 RStudio Server 的 Azure Databricks 叢集

注意

作為 RStudio Server 的替代方案,您可以使用 RStudio Desktop,透過 ODBC 連線從本機開發電腦連線到 Azure Databricks 叢集或 SQL 倉儲,並呼叫 R 的 ODBC 套件函式。除非您也使用 Databricks 連線,否則您無法在 RStudio Desktop 案例中使用 SparkRsparklyr 等套件。

針對 RStudio Server,您可以在 Azure Databricks 上使用開放原始碼版本或 RStudio Workbench (先前為 RStudio Server Pro) 版本。 如果您想要使用 RStudio Workbench / RStudio Server Pro,您必須將現有的 RStudio Workbench / RStudio Server Pro 授權轉移至 Azure Databricks(請參閱 開始使用:RStudio Workbench)。

Databricks 建議在 Azure Databricks 叢集上使用 Databricks Runtime for 機器學習 (Databricks Runtime ML) 搭配 RStudio Server,以減少叢集啟動時間。 Databricks Runtime ML 包含 RStudio Server 開放原始碼版本的未修改版本,您可以在 GitHub 中找到原始程式碼。 下表列出 Databricks Runtime ML 版本目前預安裝的 RStudio Server 開放原始碼版本。

適用於 ML 版本的 Databricks Runtime RStudio 伺服器版本
Databricks Runtime 9.1 LTS ML 和 10.4 LTS ML 1.4

RStudio 整合架構

當您在 Azure Databricks 上使用 RStudio Server 時,RStudio Server 精靈會在 Azure Databricks 叢集的驅動程序節點上執行。 RStudio Web UI 是透過 Azure Databricks webapp 進行 Proxy 處理,這表示您不需要對叢集網路設定進行任何變更。 此圖表示范 RStudio 整合元件架構。

Databricks 上的 RStudio 架構

警告

Azure Databricks Proxy 會從叢集 Spark 驅動程式上的埠 8787 代理 RStudio Web 服務。 此 Web Proxy 僅適用於 RStudio。 如果您在埠 8787 上啟動其他 Web 服務,您可能會向使用者公開潛在的安全性惡意探索。 Databricks 和 Microsoft 都不會負責在叢集上安裝不支援的軟體所造成的任何問題。

需求

  • 叢集必須是所有用途的叢集。

  • 您必須擁有該叢集的 CAN ATTACH TO 許可權。 叢集管理員可以授與您此許可權。 請參閱 計算許可權

  • 叢集不得啟用數據表訪問控制自動終止認證傳遞

  • 叢集 不得 使用 共用存取模式

  • 叢集 不得 將 Spark 組態 spark.databricks.pyspark.enableProcessIsolation 設定為 true

  • 您必須擁有 RStudio Server floating Pro 授權才能使用 Pro 版本。

注意

雖然叢集可以使用 支援 Unity 目錄的存取模式 ,但您無法使用該叢集中的 RStudio 伺服器來存取 Unity 目錄中的數據。

開始使用:RStudio Server OS Edition

RStudio Server 開放原始碼版本已預安裝在使用 Databricks Runtime for 機器學習 的 Azure Databricks 叢集上(Databricks Runtime ML)。

若要在叢集上開啟 RStudio Server OS Edition,請執行下列動作:

  1. 開啟叢集的詳細數據頁面。

  2. 啟動叢集,然後按兩下 [ 應用程式] 索引標籤:

    [叢集應用程式] 索引標籤

  3. 在 [ 應用程式] 索引標籤上,按兩下 [ 設定 RStudio ] 按鈕。 這會為您產生一次性密碼。 按兩下顯示連結以顯示它,並複製密碼。

    RStudio 單次密碼

  4. 按兩下 [ 開啟 RStudio ] 連結,以在新索引卷標中開啟 UI。在登入窗體中輸入您的使用者名稱和密碼,然後登入。

    RStudio 登入表單

  5. 您可以從 RStudio UI 匯 SparkR 入套件,並設定 SparkR 工作階段來啟動叢集上的 Spark 作業。

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    RStudio 開放原始碼版本會話

  6. 您也可以附加 sparklyr 套件並設定 Spark 連線。

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    RStudio Open Source Edition sparklyr 連線

開始使用:RStudio Workbench

本節說明如何在 Azure Databricks 叢集上設定及開始使用 RStudio Workbench(先前稱為 RStudio Server Pro)。 請參閱名稱變更的常見問題。 根據您的授權,RStudio Workbench 可能包含 RStudio Server Pro。

設定 RStudio 授權伺服器

若要在 Azure Databricks 上使用 RStudio Workbench,您必須將 Pro 授權 轉換為浮動授權。 如需協助,請連絡 help@rstudio.com。 轉換授權時,您必須為 RStudio Workbench 設定 授權伺服器

若要設定授權伺服器:

  1. 在您的雲端提供者網路上啟動小型實例;授權伺服器精靈非常輕量型。
  2. 在您的實例上下載並安裝對應的 RStudio 授權伺服器版本,然後啟動服務。 如需詳細指示,請參閱 RStudio Workbench 管理員 指南
  3. 請確定授權伺服器埠已開啟至 Azure Databricks 實例。

安裝 RStudio Workbench

若要在 Azure Databricks 叢集上設定 RStudio Workbench,您必須建立 init 腳本來安裝 RStudio Workbench 二進位套件,並將其設定為使用您的授權伺服器進行授權租用。

注意

如果您打算在已經包含 RStudio Server 開放原始碼版本的 Databricks Runtime 版本上安裝 RStudio Workbench,您必須先卸載該套件才能安裝成功。

以下是範例 .sh 檔案,您可以儲存為 init 腳本的位置,例如在主目錄中做為工作區檔案、Unity 目錄磁碟區或物件記憶體中。 如需詳細資訊,請參閱 使用叢集範圍的 init 腳本。 腳本也會執行其他驗證組態,以簡化與 Azure Databricks 的整合。

警告

DBFS 上的叢集範圍 init 腳本是生命周期結束。 在 DBFS 中儲存 init 腳本存在於某些工作區中,以支援舊版工作負載,不建議這麼做。 所有儲存在 DBFS 中的 init 腳本都應該移轉。 如需移轉指示,請參閱 從 DBFS 移轉 init 腳本。

#!/bin/bash

set -euxo pipefail

if [[ $DB_IS_DRIVER = "TRUE" ]]; then
  sudo apt-get update
  sudo dpkg --purge rstudio-server # in case open source version is installed.
  sudo apt-get install -y gdebi-core alien

  ## Installing RStudio Workbench
  cd /tmp

  # You can find new releases at https://rstudio.com/products/rstudio/download-commercial/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-workbench-2022.02.1-461.pro1-amd64.deb -O rstudio-workbench.deb
  sudo gdebi -n rstudio-workbench.deb

  ## Configuring authentication
  sudo echo 'auth-proxy=1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-user-header-rewrite=^(.*)$ $1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-sign-in-url=<domain>/login.html' >> /etc/rstudio/rserver.conf
  sudo echo 'admin-enabled=1' >> /etc/rstudio/rserver.conf
  sudo echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/rstudio/rsession-profile

  # Enabling floating license
  sudo echo 'server-license-type=remote' >> /etc/rstudio/rserver.conf

  # Session configurations
  sudo echo 'session-rprofile-on-resume-default=1' >> /etc/rstudio/rsession.conf
  sudo echo 'allow-terminal-websockets=0' >> /etc/rstudio/rsession.conf

  sudo rstudio-server license-manager license-server <license-server-url>
  sudo rstudio-server restart || true
fi
  1. 以您的 Azure Databricks URL 取代 ,並以<license-server-url>浮動授權伺服器的 URL 取代 <domain>
  2. 將此 .sh 檔案儲存為 init 腳本,例如在主目錄中做為工作區檔案、在 Unity 目錄磁碟區或物件記憶體中。 如需詳細資訊,請參閱 使用叢集範圍的 init 腳本
  3. 啟動叢集之前,請先從相關聯的位置將此檔案新增 .sh 為 init 腳本。 如需指示,請參閱 使用叢集範圍的 init 腳本
  4. 啟動叢集。

使用 RStudio Server Pro

  1. 開啟叢集的詳細數據頁面。

  2. 啟動叢集,然後按兩下 [ 應用程式] 索引標籤:

    [叢集應用程式] 索引標籤

  3. 在 [ 應用程式] 索引標籤上,按兩下 [ 設定 RStudio ] 按鈕。

    RStudio 單次密碼

  4. 您不需要單次密碼。 按兩下 [ 開啟 RStudio UI ] 連結,它會為您開啟已驗證的 RStudio Pro 會話。

  5. 您可以從 RStudio UI 附加 SparkR 套件,並設定 SparkR 工作階段以在叢集上啟動 Spark 作業。

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    RStudio Pro 會話

  6. 您也可以附加 sparklyr 套件並設定 Spark 連線。

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    RStudio Pro sparklyr 連線

RStudio Server 常見問題

RStudio Server 開放原始碼版本與 RStudio Workbench 之間的差異為何?

RStudio Workbench 支援在開放原始碼版本上無法使用的各種企業功能。 您可以在 RStudio 的網站看到功能比較。

此外,RStudio Server 開放原始碼版本會以 GNU Affero 一般公開授權 (AGPL) 散發,而 Pro 版本則隨附無法使用 AGPL 軟體的組織的商業授權。

最後,RStudio Workbench 隨附 RStudio、PROXY 的專業和企業支援,而 RStudio Server 開放原始碼版本則不受支援。

我可以在 Azure Databricks 上使用 RStudio Workbench / RStudio Server Pro 授權嗎?

是,如果您已經有 RStudio Server 的 Pro 或 Enterprise 授權,您可以在 Azure Databricks 上使用該授權。 請參閱 開始使用:RStudio Workbench 以瞭解如何在 Azure Databricks 上設定 RStudio Workbench。

RStudio Server 在何處執行? 我需要管理任何其他服務/伺服器嗎?

如您在 RStudio 整合架構圖表中所見,RStudio 伺服器精靈會在 Azure Databricks 叢集的驅動程式 (master) 節點上執行。 使用 RStudio Server 開放原始碼版本,您不需要執行任何其他伺服器/服務。 不過,針對 RStudio Workbench,您必須管理執行 RStudio 授權伺服器的個別實例。

我可以在標準叢集上使用 RStudio 伺服器嗎?

注意

本文說明舊版叢集 UI。 如需新叢集 UI 的相關信息(預覽版),包括叢集存取模式的術語變更,請參閱 計算組態參考。 如需新叢集和舊版叢集類型的比較,請參閱 叢集 UI 變更和叢集存取模式

是的,可以。

我可以在叢集上使用 RStudio 伺服器來自動終止嗎?

否,啟用自動終止時,您無法使用 RStudio。 自動終止可以清除 RStudio 工作階段內的未儲存使用者文稿和數據。 為了防止使用者遭受此非預期的數據遺失案例,預設會在這類叢集上停用 RStudio。

對於未使用叢集資源時需要清除的客戶,Databricks 建議使用 叢集 API ,根據排程清除 RStudio 叢集。

如何保存我的 RStudio 工作?

強烈建議您使用 RStudio 的版本控制系統來保存您的工作。 RStudio 非常支援各種版本控制系統,並可讓您簽入和管理您的專案。 如果您未透過下列其中一種方法保存程序代碼,則如果工作區管理員重新啟動或終止叢集,可能會遺失工作。

其中一種方法是將您的檔案(程式代碼或數據)儲存在 什麼是 Databricks 檔系統(DBFS)?上。 例如,如果您在叢集終止或重新啟動時,將不會刪除檔案底下的 /dbfs/ 檔案。

另一種方法是將 R 筆記本匯出為 Rmarkdown,然後將檔案匯入 RStudio 實例,以將它儲存至本機文件系統。 使用 RMarkdown 共用 R Notebook 部落格會詳細說明步驟。

如何? 啟動SparkR工作階段?

SparkR 包含在 Databricks Runtime 中,但您必須將它載入 RStudio。 在 RStudio 內執行下列程式代碼來初始化 SparkR 會話。

library(SparkR)

sparkR.session()

如果匯入SparkR封裝時發生錯誤,請執行 .libPaths() 並確認結果中包含 。/home/ubuntu/databricks/spark/R/lib

如果未包含,請檢查 的內容 /usr/lib/R/etc/Rprofile.site。 驅動程式上的清單 /home/ubuntu/databricks/spark/R/lib/SparkR ,以確認 SparkR 套件已安裝。

如何? 啟動sparklyr工作階段?

套件 sparklyr 必須安裝在叢集上。 使用下列其中一種方法來安裝 sparklyr 套件:

  • 作為 Azure Databricks 連結庫
  • install.packages() 命令
  • RStudio 套件管理 UI
library(sparklyr)

sc <- spark_connect(method = “databricks”)

RStudio 如何與 Azure Databricks R 筆記本整合?

您可以透過版本控制在筆記本和 RStudio 之間移動工作。

什麼是工作目錄?

當您在 RStudio 中啟動專案時,請選擇工作目錄。 根據預設,這是 RStudio Server 執行所在驅動程式 (master) 容器的主目錄。 如有需要,您可以變更此目錄。

我可以從在 Azure Databricks 上執行的 RStudio 啟動 Shiny Apps 嗎?

是,您可以在 Databricks 上的 RStudio Server 內開發及檢視 Shiny 應用程式。

我無法在 Azure Databricks 上的 RStudio 內使用終端機或 git。 如何修正此問題?

請確定您已停用websocket。 在 RStudio Server 開放原始碼版本中,您可以從 UI 執行此動作。

RStudio 工作階段

在 RStudio Server Pro 中,您可以新增 allow-terminal-websockets=0 至 以 /etc/rstudio/rsession.conf 停用所有使用者的 Websocket。

我在叢集詳細數據下看不到 [應用程式] 索引標籤。

此功能不適用於所有客戶。 您必須在 進階版 方案中