Gérer les packages avec étendue de session
Outre les packages du niveau pool, vous pouvez spécifier des bibliothèques incluses dans l’étendue de la session au début d’une session de notebook. Les bibliothèques avec étendue de session vous permettent de spécifier et d’utiliser des packages Python, jar, et R dans une session de notebook.
Lorsque vous utilisez des bibliothèques avec étendue de session, il est important de garder à l’esprit les points suivants :
- 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 aucun impact sur les autres sessions ou tâches qui utilisent le même pool Spark.
- Ces bibliothèques s’installent au-dessus des bibliothèques au niveau du runtime de base et du pool, et prennent la priorité la plus élevée.
- Les bibliothèques délimitées à la session ne sont pas conservées entre les sessions.
Packages Python avec étendue de session
Gérer les packages Python avec étendue de session par le biais d’un fichier environment.yml
Pour spécifier des packages Python avec étendue de session :
- Accédez au pool Spark sélectionné et vérifiez que vous avez activé les bibliothèques de la session. Pour activer ce paramètre, accédez à Gérer>Pool Apache Spark>onglet Packages.
- Une fois le paramètre appliqué, vous pouvez ouvrir un notebook et sélectionner Configurer la session>Packages.
- Ici, vous pouvez charger un fichier Conda environment.yml pour installer ou mettre à niveau des packages au sein d’une session. Les bibliothèques spécifiées sont présentes une fois la session démarrée. Ces bibliothèques ne seront plus disponibles après la fin de la session.
Gérer les packages Python étendus à la session via les commandes %pip et %conda
Vous pouvez utiliser les commandes %pip et %conda populaires pour installer des bibliothèques tierces supplémentaires ou vos bibliothèques personnalisées pendant votre session de notebook Apache Spark. Dans cette section, nous utilisons les commandes %pip pour illustrer plusieurs scénarios courants.
Notes
- Nous vous recommandons de placer les commandes %pip et %conda dans la première cellule de votre notebook si vous souhaitez installer de nouvelles bibliothèques. L’interpréteur Python sera redémarré après la gestion de la bibliothèque au niveau de la session pour que les modifications soient effectives.
- Ces commandes de gestion des bibliothèques Python sont désactivées lors de l’exécution de travaux de pipeline. Si vous souhaitez installer un package dans un pipeline, vous devez tirer parti des fonctionnalités de gestion des bibliothèques au niveau du pool.
- Les bibliothèques Python délimitées à la session sont automatiquement installées sur les nœuds worker et de pilote.
- Les commandes %conda suivantes ne sont pas prises en charge : create, clean, compare, activate, deactivate, run et package.
- Vous pouvez vous référer à ces commandes %pip et commandes %conda pour obtenir la liste complète des commandes.
Installer un package tiers
Vous pouvez facilement installer une bibliothèque Python à partir de PyPI.
# Install vega_datasets
%pip install altair vega_datasets
Pour vérifier le résultat de l’installation, vous pouvez exécuter le code suivant pour visualiser vega_datasets
# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
).interactive()
Installer un paquet wheel à partir d’un compte de stockage
Pour installer la bibliothèque à partir du stockage, vous devez monter dans votre compte de stockage en exécutant les commandes suivantes.
from notebookutils import mssparkutils
mssparkutils.fs.mount(
"abfss://<<file system>>@<<storage account>.dfs.core.windows.net",
"/<<path to wheel file>>",
{"linkedService":"<<storage name>>"}
)
Ensuite, vous pouvez utiliser la commande d’installation %pip pour installer le paquet wheel requis
%pip install /<<path to wheel file>>/<<wheel package name>>.whl
Installer une autre version de la bibliothèque intégrée
Vous pouvez utiliser la commande suivante pour voir quelle est la version intégrée de certains packages. Nous utilisons pandas comme exemple
%pip show pandas
Le résultat est le journal suivant :
Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...
Vous pouvez utiliser la commande suivante pour basculer pandas vers une autre version, par exemple 1.2.4
%pip install pandas==1.2.4
Désinstaller une bibliothèque étendue à une session
Si vous souhaitez désinstaller un package installé sur cette session de notebook, référez-vous aux commandes suivantes. Toutefois, vous ne pouvez pas désinstaller les packages intégrés.
%pip uninstall altair vega_datasets --yes
Utilisation de la commande %pip pour installer des bibliothèques à partir d’un fichier requirement.txt
%pip install -r /<<path to requirement file>>/requirements.txt
Packages Java ou Scala avec étendue de session
Pour spécifier des packages Java ou Scala avec étendue de session, vous pouvez utiliser l’option %%configure
:
%%configure -f
{
"conf": {
"spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
}
}
Notes
- Nous vous recommandons d’exécuter la fonctionnalité %%configure au début de votre notebook. Consultez ce document pour obtenir la liste complète des paramètres valides.
Packages R avec étendue de session (préversion)
Les pools Azure Synapse Analytics incluent de nombreuses bibliothèques R populaires prêtes à l’emploi. Vous pouvez également installer des bibliothèques tierces supplémentaires pendant votre session de notebook Apache Spark.
Notes
- Ces commandes de gestion des bibliothèques R sont désactivées lors de l’exécution de travaux de pipeline. Si vous souhaitez installer un package dans un pipeline, vous devez tirer parti des fonctionnalités de gestion des bibliothèques au niveau du pool.
- Les bibliothèques R délimitées à la session sont automatiquement installées sur les nœuds worker et de pilote.
Installer un package
Vous pouvez facilement installer une bibliothèque R à partir de CRAN.
# Install a package from CRAN
install.packages(c("nycflights13", "Lahman"))
Vous pouvez également utiliser des instantanés CRAN en tant que référentiel pour vous assurer de télécharger la même version du package à chaque fois.
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")
Utilisation de devtools pour installer des packages
La bibliothèque devtools
simplifie le développement de packages pour accélérer les tâches courantes. Cette bibliothèque est installée dans le runtime Azure Synapse Analytics par défaut.
Vous pouvez utiliser devtools
pour spécifier une version spécifique d’une bibliothèque à installer. Ces bibliothèques seront installées sur tous les nœuds du cluster.
# Install a specific version.
install_version("caesar", version = "1.0.0")
De même, vous pouvez installer une bibliothèque directement à partir de GitHub.
# Install a GitHub library.
install_github("jtilly/matchingR")
Actuellement, les fonctions devtools
suivantes sont prises en charge dans Azure Synapse Analytics :
Commande | Description |
---|---|
install_github() | Installe un package R à partir de GitHub |
install_gitlab() | Installe un package R à partir de GitLab |
install_bitbucket() | Installe un package R à partir de BitBucket |
install_url() | Installe un package R à partir d’une URL arbitraire |
install_git() | Installe à partir d’un référentiel Git arbitraire |
install_local() | Installe à partir d’un fichier local sur le disque |
install_version() | Installe à partir d’une version spécifique sur CRAN |
Voir les bibliothèques installées
Vous pouvez interroger toutes les bibliothèques installées dans votre session à l’aide de la commande library
.
library()
Vous pouvez utiliser la fonction packageVersion
pour vérifier la version de la bibliothèque :
packageVersion("caesar")
Supprimer un package R d’une session
Vous pouvez utiliser la fonction detach
pour supprimer une bibliothèque de l’espace de noms. Ces bibliothèques restent sur disque jusqu’à ce qu’elles soient chargées à nouveau.
# detach a library
detach("package: caesar")
Pour supprimer un package à l’étendue d’une session d’un notebook, utilisez la commande remove.packages()
. Cette modification de bibliothèque n’a aucun impact sur les autres sessions sur le même cluster. Les utilisateurs ne peuvent pas désinstaller ou supprimer des bibliothèques intégrées du runtime Azure Synapse Analytics par défaut.
remove.packages("caesar")
Notes
Vous ne pouvez pas supprimer de packages principaux comme SparkR, SparklyR ou R.
Bibliothèques R délimitées à une session et SparkR
Des bibliothèques à l’étendue du notebook sont disponibles sur les workers SparkR.
install.packages("stringr")
library(SparkR)
str_length_function <- function(x) {
library(stringr)
str_length(x)
}
docs <- c("Wow, I really like the new light sabers!",
"That book was excellent.",
"R is a fantastic language.",
"The service in this restaurant was miserable.",
"This is neither positive or negative.")
spark.lapply(docs, str_length_function)
Bibliothèques R délimitées à une session et SparklyR
Avec spark_apply() dans SparklyR, vous pouvez utiliser n’importe quel package R à l’intérieur de Spark. Par défaut, dans sparklyr::spark_apply(), l’argument packages affecte la valeur FALSE. Cela copie les bibliothèques dans les libPaths actuels vers les Workers, ce qui vous permet de les importer et de les utiliser sur les Workers. Par exemple, vous pouvez exécuter ce qui suit pour générer un message chiffré en Caesar avec sparklyr::spark_apply() :
install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")
spark_version <- "3.2"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)
apply_cases <- function(x) {
library(caesar)
caesar("hello world")
}
sdf_len(sc, 5) %>%
spark_apply(apply_cases, packages=FALSE)
Étapes suivantes
- Afficher les bibliothèques par défaut : Prise en charge des versions d’Apache Spark
- Gérer les packages en dehors du portail Synapse Studio : Gérer les packages avec les commandes Az et les API REST