適用於:SQL Server 2019 (15.x)
Important
MICROSOFT SQL Server 2019 巨量數據叢集已淘汰。 SQL Server 2019 巨量數據叢集的支援已於 2025 年 2 月 28 日結束。 如需詳細資訊,請參閱 Microsoft SQL Server 平臺上的公告部落格文章和巨量數據選項。
Sparklyr 提供 Apache Spark 的 R 介面。 Sparklyr 是 R 開發人員使用 Spark 的熱門方式。 本文說明如何使用 RStudio 在 SQL Server 2019 巨量數據叢集中使用 sparklyr。
Prerequisites
安裝 R 和 RStudio Desktop
使用下列步驟安裝及設定 RStudio Desktop :
如果您在 Windows 用戶端上執行, 請下載並安裝 R 3.6.3。 此外, 請下載並安裝 RTools 3.5。 請務必在PATH環境變數上設定 RTools 二進位資料夾。
Warning
R 4.x 版和 sparklyr 版本中,除了以下指定的版本外,其他版本已在 SQL Server 巨量數據叢集 CU13 中被確認無法使用。
下載並安裝 RStudio Desktop。 可選擇地,所有範例都可以在 R 環境中運行。
安裝完成之後,請在 RStudio Desktop 或 R 殼層內執行下列命令,以安裝必要的套件。 當系統詢問時,請確認從來源編譯套件。
install.packages("devtools")
devtools::install_github('rstudio/sparklyr', ref = 'v1.7.0', upgrade = 'always', repos = 'https://cran.microsoft.com/snapshot/2021-06-11/')
連接到大數據叢集中的Spark
您可以使用 Sparklyr,使用 Livy 和 HDFS/Spark 閘道從客戶端連線到巨量數據叢集。
在 RStudio 中,建立 R 腳本並連線到 Spark,如下列範例所示:
Tip
對於<AZDATA_USERNAME>和<AZDATA_PASSWORD>的值,請使用您在巨量數據叢集部署期間設定的使用者名稱和密碼。
從 SQL Server 2019 (15.x) CU 5 開始,當您部署具有基本身份驗證的新叢集時,所有端點(包括閘道)使用 AZDATA_USERNAME 和 AZDATA_PASSWORD。 升級至 CU 5 之叢集上的端點會繼續使用 root 作為使用者名稱來連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱在版本資訊中的透過閘道端點存取服務的憑證。
有關 <IP> 和 <PORT> 的值,請參閱連線至巨量資料叢集的文件。
library(sparklyr)
library(dplyr)
library(DBI)
#Specify the Knox username and password
config <- livy_config(user = "<AZDATA_USERNAME>", password = "<AZDATA_PASSWORD>")
httr::set_config(httr::config(ssl_verifypeer = 0L, ssl_verifyhost = 0L))
sc <- spark_connect(master = "https://<IP>:<PORT>/gateway/default/livy/v1",
method = "livy",
config = config)
執行 sparklyr 查詢
連線到 Spark 之後,您可以執行 sparklyr。 下列範例會使用sparklyr 對 iris 數據集執行查詢:
iris_tbl <- copy_to(sc, iris)
iris_count <- dbGetQuery(sc, "SELECT COUNT(*) FROM iris")
iris_count
分散式 R 計算
sparklyr 的一項功能是能夠使用 spark_apply 分散 R 計算。
因為巨量數據叢集使用 Livy 連線,因此您必須在呼叫 packages = FALSE 時設定 。 如需詳細資訊,請參閱有關分散式 R 計算的 Sparklyr 檔的 Livy 一節 。 使用此設定時,您只能在傳遞至 spark_apply 的 R 程式代碼中使用已安裝在 Spark 叢集上的 R 套件。 下列範例示範這項功能:
iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)
Next steps
如需巨量數據叢集的詳細資訊,請參閱 什麼是 SQL Server 2019 巨量數據叢集。