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

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

Внимание

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

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

Необходимые компоненты

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

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

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

    Предупреждение

    Версии R 4.x и версии sparklyr, которые не указаны ниже, не работают в CU13 для Кластеров больших данных SQL Server.

  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_USERNAME шлюза и AZDATA_PASSWORD. Конечные точки в кластерах, которые обновлены до накопительного пакета обновления 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)

Следующие шаги

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