Partager via


Utiliser R pour Apache Spark avec Azure Synapse Analytics

Azure Synapse Analytics fournit une prise en charge de R intégrée pour Apache Spark. Dans ce cadre, les scientifiques des données peuvent utiliser des notebooks Azure Synapse Analytics pour écrire et exécuter leur code R. Cela inclut également la prise en charge de SparkR et SparklyR, ce qui permet aux utilisateurs d’interagir avec Spark à l’aide d’interfaces Spark ou R familières.

Dans cet article, vous allez apprendre à utiliser R pour Apache Spark avec Azure Synapse Analytics.

Runtime R

Azure Synapse Analytics prend en charge un runtime R qui comprend de nombreux packages R open source populaires, notamment TidyVerse. Le runtime R est disponible sur tous les pools Apache Spark 3.

Pour en savoir plus sur les bibliothèques installées sur chaque runtime, vous pouvez consulter la page suivante : - Runtimes Azure Synapse Analytics

Créer et exécuter des sessions de notebook

Un notebook Azure Synapse est une interface web permettant de créer des fichiers contenant du code, des visualisations et du texte descriptif dynamiques. Les notebooks constituent un bon endroit où valider des idées et effectuer des expérimentations rapides pour extraire des insights de vos données. Les notebooks sont également largement utilisés pour la préparation et la visualisation de données, l’apprentissage automatique et d’autres scénarios en lien avec le Big Data.

Pour bien démarrer avec R dans les notebooks Synapse, vous pouvez modifier le langage principal en définissant l’option de langage sur SparkR (R).

Screenshot of the R language option.

Par ailleurs, vous pouvez utiliser plusieurs langages dans un même bloc-notes en spécifiant la commande magic du langage au début d’une cellule.

%%sparkr
# Enter your R code here

Pour en savoir plus sur les notebooks dans Azure Synapse Analytics, vous pouvez consulter le guide sur la gestion des notebooks.

Installer des packages

Les bibliothèques fournissent du code réutilisable que vous pouvez inclure dans vos programmes ou projets. Pour que vos applications disposent d’un code tiers ou généré en local, vous pouvez installer une bibliothèque sur l’un de vos pools Apache Spark serverless ou sur votre session de notebook.

Gérer les packages d’espace de travail R

Dans Synapse, les packages d’espace de travail peuvent être des fichiers R tar.gz personnalisés ou privés. Vous pouvez charger ces packages sur votre espace de travail et les affecter par la suite à un pool Apache Spark serverless spécifique. Une fois attribués, ces packages d’espace de travail sont installés automatiquement sur toutes les sessions de pool Spark démarrées sur le pool correspondant.

Pour en savoir plus sur la gestion des bibliothèques d’espace de travail, consultez les articles suivants : - Gérer les packages d’espace de travail

Gérer les sessions R

Lors de l’analyse interactive des données ou du machine learning, il se peut que vous essayiez des packages plus récents ou que vous ayez besoin de packages qui ne sont pas disponibles actuellement dans votre pool Apache Spark. Au lieu de mettre à jour la configuration du pool, les utilisateurs peuvent désormais utiliser des packages avec étendue de session pour ajouter, gérer et mettre à jour les dépendances de session.

  • Lorsque vous installez des bibliothèques avec étendue de session, seul le notebook actif peut accéder aux bibliothèques spécifiées.
  • Ces bibliothèques n’ont aucune incidence sur les autres sessions ou tâches qui utilisent le même pool Spark.
  • Ces bibliothèques sont installées en plus du runtime de base et des bibliothèques de pools.
  • Les bibliothèques de notebooks sont prioritaires.
  • Les bibliothèques R délimitées à la session ne sont pas conservées entre les sessions. Ces bibliothèques sont installées au début de chaque session quand les commandes d’installation associées sont exécutées
  • Les bibliothèques R délimitées à la session sont automatiquement installées sur les nœuds worker et de pilote

Par exemple, les utilisateurs peuvent installer une bibliothèque R à partir de CRAN et d’instantanés CRAN. Dans l’exemple ci-dessous, Highcharter est un package populaire pour les visualisations R. Je peux installer ce package sur tous les nœuds de mon pool Apache Spark à l’aide de la commande suivante :

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Pour en savoir plus sur la gestion des bibliothèques R de session, consultez l’article suivant : Gérer les packages de session R

Utilitaires de notebook

Microsoft Spark Utilities (MSSparkUtils) est un package intégré qui vous permet d’effectuer aisément des tâches courantes. Vous pouvez utiliser MSSparkUtils pour travailler efficacement avec des systèmes de fichiers, pour récupérer des variables d’environnement, chaîner des notebooks et utiliser des secrets. MSSparkUtils est pris en charge pour les notebooks R.

Pour commencer, vous pouvez exécuter les commandes suivantes :

library(notebookutils)
mssparkutils.fs.help()

Pour en savoir plus sur les commandes MSSparkUtils prises en charge, consultez l’article suivant : Utiliser les utilitaires Microsoft Spark

Utiliser SparkR

SparkR est un package R qui fournit un frontend léger pour utiliser Apache Spark à partir de R. SparkR fournit une implémentation de trame de données distribuée qui prend en charge des opérations comme la sélection, le filtrage, l’agrégation, etc. SparkR prend également en charge le Machine Learning distribué à l’aide de MLlib.

Créer un dataframe SparkR à partir d’un data.frame R local

La façon la plus simple de créer une Tramedonnées consiste à convertir un data.frame R local en Tramedonnées Spark. Dans cet exemple, nous utilisons as.DataFrame et transmettons le dataframe R local pour créer le SparkDataFrame.

df <- as.DataFrame(faithful)

# Displays the first part of the SparkDataFrame
head(df)
##  eruptions waiting
##1     3.600      79
##2     1.800      54

Créer un dataframe SparkR à l’aide de l’API de source de données Spark

SparkR prend en charge l’exploitation sur diverses sources de données via l’interface SparkDataFrame. La méthode générale pour créer un DataFrame à partir d’une source de données est read.df. Cette méthode prend le chemin d’accès du fichier à charger et le type de source de données. SparkR prend en charge la lecture des fichiers CSV, JSON, texte et Parquet en mode natif.

# Read a csv from ADLSg2
df <- read.df('abfss://<container name>@<storage account name>.dfs.core.windows.net/avocado.csv', 'csv', header="true")
head(df)

Créer un dataframe SparkR à l’aide de Spark SQL

Vous pouvez également créer des trames de données SparkR à l’aide de requêtes Spark SQL.

# Register this SparkDataFrame as a temporary view.
createOrReplaceTempView(df, "eruptions")

# SQL statements can be run by using the sql method
sql_df <- sql("SELECT * FROM eruptions")
head(sql_df)

Apprentissage automatique

SparkR expose la plupart des algorithmes MLLib. En coulisse, SparkR utilise MLlib pour former le modèle. Pour en savoir plus sur les algorithmes de Machine Learning pris en charge, consultez la documentation pour SparkR et MLlib.

# Create the DataFrame
cars <- cbind(model = rownames(mtcars), mtcars)
carsDF <- createDataFrame(cars)

# Fit a linear model over the dataset.
model <- spark.glm(carsDF, mpg ~ wt + cyl)

# Model coefficients are returned in a similar format to R's native glm().
summary(model)

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.

Pour établir une connexion sparklyr, vous pouvez utiliser la méthode de connexion suivante dans spark_connect().

spark_version <- "<enter Spark version>"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config, method='synapse')

Étapes suivantes