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


Используйте sparklyr

Ресурс языка R sparklyr служит интерфейсом для Apache Spark. Ресурс Sparklr предоставляет механизм взаимодействия с Знакомыми интерфейсами R Spark. Используйте sparklyr через определения пакетных заданий Spark или интерактивные блокноты Microsoft Fabric.

sparklyr используется с другими пакетами tidyverse , например dplyr. Microsoft Fabric распространяет последнюю стабильную версию sparklyr и tidyverse с каждым выпуском среды выполнения. Эти ресурсы можно импортировать и начать использовать API.

Необходимые условия

  • Получите подписку Microsoft Fabric. Или вы можете подписаться на бесплатную пробную версию Microsoft Fabric.

  • Войдите в Microsoft Fabric.

  • Используйте переключатель интерфейса в левой нижней части домашней страницы, чтобы перейти на Fabric.

    снимок экрана меню переключателя режимов, в котором показано, где выбрать Data Science.

  • Откройте или создайте записную книжку. Дополнительные сведения см. в статье Использование записных книжек Microsoft Fabric.

  • Установите языковую опцию на SparkR (R), чтобы изменить основной язык.

  • Подключите ноутбук к lakehouse. В левой части выберите Добавить, чтобы добавить существующий лейкхаус или создать новый лейкхаус.

Подключение sparklyr к кластеру Synapse Spark

Метод подключения функции spark_connect() устанавливает соединение sparklyr. Функция создает новый метод подключения с именем synapse, который подключается к существующему сеансу Spark. Это значительно сокращает время начала сеанса sparklyr. Этот метод подключения доступен в проекте sparklyr с открытым кодом. С помощью method = "synapse" можно использовать как sparklyr, так и SparkR в одной сессии и легко обмениваться данными между ними. В следующем примере кода ячейки записной книжки используется функция spark_connect():

# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", method = "synapse", config = config)

Используйте sparklyr для чтения данных

Новый сеанс Spark не содержит данных. Затем необходимо загрузить данные в память сеанса Spark или указать Spark расположение данных, чтобы сеанс смог получить доступ к данным по запросу:

# load the sparklyr package
library(sparklyr)

# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)

head(mtcars_tbl)

С помощью sparklyr, вы также можете write и read извлекать данные из файла Lakehouse, используя значение пути ABFS. Чтобы прочитать и записать в Lakehouse, сначала добавьте Lakehouse в сеанс. В левой части записной книжки нажмите кнопку "Добавить ", чтобы добавить существующий Lakehouse. Кроме того, можно создать Lakehouse.

Чтобы найти путь ABFS, щелкните правой кнопкой мыши папку "Файлы " в Lakehouse и выберите путь Copy ABFS. Вставьте путь для замены abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files в следующем примере кода:

temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"

# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')

# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv) 
head(mtcarsDF)

Использование sparklyr для управления данными

sparklyr предоставляет различные способы обработки данных внутри Spark с помощью:

  • команды dplyr
  • SparkSQL
  • Преобразователи функций Spark

Используйте dplyr

Для подготовки данных в Spark можно использовать знакомые команды dplyr. Команды выполняются внутри Spark, предотвращая ненужные передачи данных между R и Spark.

# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)

cargroup <- group_by(mtcars_tbl, cyl) %>%
  count() %>%
  arrange(desc(n))

cargroup

Ресурс Manipulating Data with dplyr предоставляет дополнительную информацию об использовании dplyr с Spark. sparklyr и dplyr преобразуйте команды R в Spark SQL. Используется show_query() для отображения результирующего запроса:

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Использование SQL

Запросы SQL также можно выполнять непосредственно в таблицах в кластере Spark. Объект spark_connection() реализует интерфейс DBI для Spark, чтобы использовать dbGetQuery() для выполнения SQL и возврата результата в виде кадра данных R:

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

Использование преобразователей компонентов

Оба предыдущих метода используют инструкции SQL. Spark предоставляет команды, которые упрощают некоторые преобразования данных без использования SQL. Например, ft_binarizer() команда упрощает создание нового столбца, указывающего, превышает ли значение в другом столбце определенное пороговое значение:

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

Ресурс Reference -FT предоставляет полный список доступных преобразователей sparklyrфункций Spark.

Совместное использование данных между sparklyr и SparkR

При подключении sparklyr к кластеру synapse spark с method = "synapse"помощью обоих sparklyrSparkR и становятся доступными в одном сеансе и могут легко обмениваться данными между собой. Вы можете создать таблицу Spark в sparklyr и прочитать её из SparkR.

# load the sparklyr package
library(sparklyr)

# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)

# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")

head(mtcars_sparklr)

Обучение машины

В следующем примере используется ml_linear_regression() для соответствия модели линейной регрессии. Модель использует встроенный mtcars набор данных, чтобы попытаться предсказать потребление топлива () автомобиля на основе веса (mpgwt) автомобиля и количества цилиндров (cyl) двигателя автомобиля. Все случаи здесь предполагают линейную связь между mpg всеми нашими функциями.

Создание наборов данных тестирования и обучения

Используйте разбиение: 70% для обучения и 30% для тестирования модели. Изменения в этом соотношении приводят к различным моделям:

# split the dataframe into test and training dataframes

partitions <- mtcars_tbl %>%
  select(mpg, wt, cyl) %>% 
  sdf_random_split(training = 0.7, test = 0.3, seed = 2023)

Обучение модели

Натренируйте модель логистической регрессии.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

Используйте summary() для получения дополнительных сведений о качестве нашей модели и статистической важности каждого из наших прогнозаторов:

summary(fit)

Используйте модель

Вызовите ml_predict(), чтобы применить модель к тестовому набору данных.

pred <- ml_predict(fit, partitions$test)

head(pred)

Посетите Reference - ML для получения списка моделей машинного обучения Spark, доступных с помощью sparklyr.

Отключение от кластера Spark

Вызовите spark_disconnect(), или нажмите кнопку «Остановить сеанс» на панели инструментов записной книжки, чтобы завершить сеанс Spark.

spark_disconnect(sc)

Дополнительные сведения о функциях R: