在 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

  1. 如果您是在 Windows 用戶端上執行,請下載並安裝 R 3.6.3。 此外,請下載並安裝 RTools 3.5。 請務必在 PATH 環境變數上設定 RTools 二進位資料夾。

    警告

    R 4.x 版和以下指定版本以外的 sparklyr 版本已經過驗證,自 SQL Server 巨量資料叢集 CU13 起無法運作。

  2. 下載並安裝 RStudio Desktop。 或者,所有範例都可以在 R 殼層上運作。

  3. 安裝完成之後,請在 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_USERNAMEAZDATA_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 巨量資料叢集