Используйте sparklyr
sparklyr — это интерфейс R для Apache Spark. Он предоставляет механизм взаимодействия с Spark с помощью знакомых интерфейсов R. Используйте sparklyr для выполнения пакетных заданий в среде Spark или работы с интерактивными блокнотами Microsoft Fabric.
sparklyr
используется вместе с другими пакетами tidyverse, например dplyr. Microsoft Fabric распространяет последнюю стабильную версию sparklyr и tidyverse с каждым выпуском среды выполнения. Их можно импортировать и начать использовать API.
Необходимые условия
Получите подписку Microsoft Fabric. Или вы можете подписаться на бесплатную пробную версию Microsoft Fabric.
Войдите в Microsoft Fabric.
Используйте переключатель интерфейса в левой нижней части домашней страницы, чтобы перейти на Fabric.
Откройте или создайте записную книжку. Дополнительные сведения см. в статье Использование записных книжек Microsoft Fabric.
Установите языковую опцию на SparkR (R), чтобы изменить основной язык.
Подключите ноутбук к lakehouse. В левой части выберите Добавить, чтобы добавить существующий лейкхаус или создать новый лейкхаус.
Подключение sparklyr к кластеру Synapse Spark
Используйте следующий метод подключения в spark_connect()
, чтобы установить подключение sparklyr
. Мы поддерживаем новый метод подключения с именем synapse
, который позволяет подключаться к существующему сеансу Spark. Это значительно сокращает время начала сеанса sparklyr
. Кроме того, мы внесли этот метод подключения в проект с открытым исходным кодом sparklyr . С method = "synapse"
можно использовать sparklyr
и SparkR
в одном сеансе и легко обмениваться данными.
# 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.
Чтобы найти путь ABFS, щелкните правой кнопкой мыши папку Files в Lakehouse и затем выберите Копировать путь 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.
Щелкните управление данными с dplyr
, чтобы просмотреть дополнительную документацию по использованию dplyr с 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
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()
упрощает создание нового столбца, указывающего, превышает ли значение другого столбца определенное пороговое значение.
Полный список преобразователей функций Spark доступен в справочнике в разделе -FTчерез sparklyr
.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Совместное использование данных между sparklyr
и SparkR
При подключении sparklyr
к кластеру Synapse Spark с method = "synapse"
можно использовать как sparklyr
, так и SparkR
в одном сеансе и легко обмениваться данными между ними. Вы можете создать таблицу 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
и видим, можно ли прогнозировать потребление топлива автомобиля (mpg
) на основе его веса (wt
), а также количество цилиндров, содержащихся в двигателе (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)
Для получения списка моделей машинного обучения Spark, доступных через sparklyr, посетите справочник по машинному обучению.
Отключение от кластера Spark
Вы можете вызвать команду spark_disconnect()
или выбрать кнопку остановить сеанс на панели инструментов записной книжки, чтобы завершить ваш сеанс Spark.
spark_disconnect(sc)
Связанное содержимое
Дополнительные сведения о функциях R: