在 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。
必备条件
安装 R 和 RStudio Desktop
使用以下步骤安装和配置 RStudio Desktop :
如果在 Windows 客户端运行,请下载并安装 R 3.6.3。 此外,请下载并安装 RTools 3.5。 确保在 PATH 环境变量上配置 RTools 二进制文件的文件夹。
警告
自 SQL Server 大数据群集 CU13 起,已确认 R 版本 4.x 和 sparklyr 版本(除了下面指定的版本以外)无法正常运行。
下载并安装 RStudio Desktop。 或者,所有示例都在 R shell 上起作用。
安装完成后,在 RStudio Desktop 或 R shell 内运行以下命令以安装所需的包。 出现提示时,请确认从源编译包。
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 来分布 计算。
由于大数据群集使用 Livy 连接,因此必须在对“spark_apply”的调用中设置 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)
后续步骤
有关大数据群集的详细信息,请参阅什么是 SQL Server 2019 大数据群集。