在 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 :

  1. 如果在 Windows 客户端运行,请下载并安装 R 3.6.3。 此外,请下载并安装 RTools 3.5。 确保在 PATH 环境变量上配置 RTools 二进制文件的文件夹。

    警告

    自 SQL Server 大数据群集 CU13 起,已确认 R 版本 4.x 和 sparklyr 版本(除了下面指定的版本以外)无法正常运行。

  2. 下载并安装 RStudio Desktop。 或者,所有示例都在 R shell 上起作用。

  3. 安装完成后,在 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_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分布 计算

由于大数据群集使用 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 大数据群集