共用方式為


在 SQL Server 巨量數據叢集中使用 sparklyr

適用於: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

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

    Warning

    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,如下列範例所示:

Tip

對於<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 時設定 。 如需詳細資訊,請參閱有關分散式 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 巨量數據叢集