Partager via


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 :

  1. 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. Capture d’écran de l’activation de packages de session.
  2. Une fois le paramètre appliqué, vous pouvez ouvrir un notebook et sélectionner Configurer la session>Packages. Capture d’écran de la spécification de packages de session. Capture d’écran du chargement du fichier Yml.
  3. 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