Utiliser sparklyr
sparklyr est une interface R pour Apache Spark. Il fournit un mécanisme permettant d’interagir avec Spark à l’aide d’interfaces R familières. Vous pouvez utiliser sparklyr via des définitions de travaux par lots Spark ou avec des notebooks Microsoft Fabric interactifs.
Important
Microsoft Fabric est actuellement en préversion. Certaines informations portent sur un produit en préversion susceptible d’être substantiellement modifié avant sa publication. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.
sparklyr
est utilisé avec d’autres packages tidyverse tels que dplyr. Microsoft Fabric distribue la dernière version stable de sparklyr et tidyverse à chaque version du runtime. Vous pouvez les importer et commencer à utiliser l’API.
Prérequis
Un abonnement Power BI Premium. Si vous n’en avez pas, consultez Comment acheter Power BI Premium.
Un espace de travail Power BI avec une capacité Premium affectée. Si vous n’avez pas d’espace de travail, suivez les étapes décrites dans Créer un espace de travail pour en créer un et l’affecter à une capacité Premium.
Connectez-vous à Microsoft Fabric.
Ouvrez ou créez un bloc-notes. Pour savoir comment procéder, consultez Comment utiliser des notebooks Microsoft Fabric.
Modifiez la langue principale en définissant l’option de langue sur SparkR (R).
Joignez votre bloc-notes à un lakehouse. Sur le côté gauche, sélectionnez Ajouter pour ajouter un lakehouse existant ou créer un lakehouse.
Connecter sparklyr au cluster Spark Synapse
Utilisez la méthode de connexion suivante dans spark_connect()
pour établir une sparklyr
connexion.
# 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", config = config)
Utiliser sparklyr pour lire des données
Une nouvelle session Spark ne contient aucune donnée. La première étape consiste à charger des données dans la mémoire de votre session Spark ou à pointer Spark vers l’emplacement des données afin qu’il puisse accéder aux données à la demande.
# 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)
À l’aide de sparklyr
, vous pouvez également write
et read
les données d’un fichier Lakehouse à l’aide du chemin ABFS. Pour lire et écrire dans un Lakehouse, commencez par l’ajouter à votre session. Sur le côté gauche du bloc-notes, sélectionnez Ajouter pour ajouter un Lakehouse existant ou créer un Lakehouse.
Pour rechercher votre chemin ABFS, cliquez avec le bouton droit sur le dossier Fichiers dans votre Lakehouse, puis sélectionnez Copier le chemin ABFS. Collez votre chemin à remplacer abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
dans ce code :
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)
Utiliser sparklyr pour manipuler des données
sparklyr
fournit plusieurs méthodes pour traiter des données à l’intérieur de Spark à l’aide de :
- Commandes
dplyr
- SparkSQL
- Transformateurs de fonctionnalités de Spark
Utilisez dplyr
.
Vous pouvez utiliser des commandes familières dplyr
pour préparer des données à l’intérieur de Spark. Les commandes s’exécutant dans Spark, il n’y a donc pas de transferts de données inutiles entre R et Spark.
Cliquez sur Manipulation de données avec dplyr
pour voir la documentation supplémentaire sur l’utilisation de dplyr avec 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
et dplyr
traduisez les commandes R en Spark SQL pour nous. Pour afficher la requête résultante, utilisez show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
Utiliser SQL
Il est également possible d’exécuter des requêtes SQL directement sur des tables au sein d’un cluster Spark. L’objet spark_connection()
implémente une interface DBI pour Spark. Vous pouvez donc utiliser dbGetQuery()
pour exécuter SQL et retourner le résultat sous forme de trame de données R :
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
Utiliser des transformateurs de fonctionnalités
Les deux méthodes précédentes s’appuient sur des instructions SQL. Spark fournit des commandes qui rendent certaines transformations de données plus pratiques, et sans l’utilisation de SQL.
Par exemple, la ft_binarizer()
commande simplifie la création d’une nouvelle colonne qui indique si la valeur d’une autre colonne est supérieure à un certain seuil.
Vous trouverez la liste complète des transformateurs de fonctionnalités Spark disponibles dans sparklyr
Référence -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Apprentissage automatique
Voici un exemple où nous utilisons ml_linear_regression()
pour ajuster un modèle de régression linéaire. Nous utilisons le jeu de données intégré et voyons si nous pouvons prédire la consommation de carburant d’une voiture () en mtcars
fonction de son poids (wt
) et du nombre de cylindres que le moteur contient (cyl
).mpg
Dans chaque cas, nous partons du principe que la relation entre mpg
et chacune de nos fonctionnalités est linéaire.
Générer des jeux de données de test et d’entraînement
Utilisez un fractionnement simple, 70 % pour l’entraînement et 30 % pour tester le modèle. Le fait de jouer avec ce ratio peut entraîner différents modèles.
# 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)
Effectuer l’apprentissage du modèle
Entraîner le modèle de régression logistique.
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
summary()
Utilisez maintenant pour en savoir un peu plus sur la qualité de notre modèle et la signification statistique de chacun de nos prédicteurs.
summary(fit)
Utiliser le modèle
Vous pouvez appliquer le modèle sur le jeu de données de test en appelant ml_predict()
.
pred <- ml_predict(fit, partitions$test)
head(pred)
Pour obtenir la liste des modèles Spark ML disponibles via sparklyr, consultez Référence - ML
Se déconnecter du cluster Spark
Vous pouvez appeler spark_disconnect()
ou sélectionner le bouton Arrêter la session en haut du ruban du bloc-notes à la fin de votre session Spark.
spark_disconnect(sc)
Étapes suivantes
En savoir plus sur les fonctionnalités R :