Поделиться через


Использование sparklyr в кластере больших данных SQL Server

Область применения: SQL Server 2019 (15.x)

Important

Кластеры больших данных Microsoft SQL Server 2019 прекращены. Поддержка кластеров больших данных SQL Server 2019 закончилась с 28 февраля 2025 г. Дополнительные сведения см. в записи блога объявлений и параметрах больших данных на платформе Microsoft SQL Server.

Sparklyr предоставляет интерфейс R для Apache Spark. Sparklyr — это популярный способ для разработчиков R использовать Spark. В этой статье описывается использование sparklyr в кластерах больших данных SQL Server 2019 с помощью RStudio.

Prerequisites

Установка R и RStudio Desktop

Установите и настройте RStudio Desktop , выполнив следующие действия.

  1. Если вы работаете на клиенте Windows, скачайте и установите R 3.6.3. Кроме того, скачайте и установите RTools 3.5. Обязательно настройте двоичную папку RTools в переменной среды PATH.

    Warning

    Версии R 4.x и версии sparklyr, отличные от указанной ниже, были проверены и не работают по состоянию на CU13 SQL Server Big Data Clusters.

  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 в кластере больших данных

Спарклир можно использовать для подключения от клиента к кластеру больших данных с помощью Livy и шлюза HDFS/Spark.

В RStudio создайте скрипт R и подключитесь к Spark, как показано в следующем примере:

Tip

Для значений <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. В следующем примере выполняется запрос к набору iris данных с помощью sparklyr:

iris_tbl <- copy_to(sc, iris)

iris_count <- dbGetQuery(sc, "SELECT COUNT(*) FROM iris")

iris_count

Распределенные вычисления R

Одной из функций sparklyr является возможность распределения вычислений R с spark_apply.

Так как кластеры больших данных используют подключения Livy, необходимо задать packages = FALSE в вызове spark_apply. Дополнительные сведения см. в разделе Livy документации sparklyr по распределённым вычислениям на R. С помощью этого параметра можно использовать только пакеты R, которые уже установлены в кластере Spark в коде R, переданном в spark_apply. В следующем примере показана эта функция:

iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)

Next steps

Дополнительные сведения о кластерах больших данных см. в статье "Что такое кластеры больших данных SQL Server 2019".