在 SQL Server 巨量資料叢集中使用 sparklyr
適用於:SQL Server 2019 (15.x)
重要
Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章與 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 二進位資料夾。
警告
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,如下列範例所示:
提示
針對 <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
設定為 spark_apply。 如需詳細資訊,請參閱分散式 R 計算相關 sparklyr 文件的 Livy 一節。 使用此設定時,您只能在要傳遞給 spark_apply 的 R 程式碼中使用 Spark 叢集上所安裝 R 套件。 下列範例示範此功能:
iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)
後續步驟
如需有關巨量資料叢集的詳細資訊,請參閱什麼是 SQL Server 2019 巨量資料叢集。