Gestire i pacchetti con ambito sessione

Oltre ai pacchetti a livello di pool, è anche possibile specificare librerie con ambito sessione all'inizio di una sessione del notebook. Le librerie con ambito sessione consentono di specificare e usare pacchetti Python, jar e R all'interno di una sessione del notebook.

Quando si usano librerie con ambito sessione, è importante tenere presenti i seguenti punti:

  • Quando si installano librerie con ambito sessione, solo il notebook corrente ha accesso alle librerie specificate.
  • Queste librerie non hanno alcun impatto su altre sessioni o processi che usano lo stesso pool di Spark.
  • Queste librerie vengono installate sopra il runtime di base e le librerie a livello di pool e hanno la precedenza più alta.
  • Le librerie con ambito sessione non vengono mantenute tra le sessioni.

Pacchetti Python con ambito sessione

Gestire i pacchetti Python con ambito sessione tramite il file environment.yml

Per specificare pacchetti Python con ambito sessione:

  1. Andare al pool di Spark selezionato e assicurarsi di avere abilitato le librerie a livello di sessione. È possibile abilitare questa impostazione passando alla scheda Gestisci>Pool di Apache Spark>Pacchetti.Screenshot of enabling session packages.
  2. Dopo aver applicato l'impostazione, è possibile aprire un notebook e selezionare Configura sessione>Pacchetti. Screenshot of specifying session packages.Screenshot of uploading Yml file.
  3. Qui è possibile caricare un file Conda environment.yml per installare o aggiornare i pacchetti all'interno di una sessione. Le librerie specificate sono presenti all'avvio della sessione. Queste librerie non saranno più disponibili al termine della sessione.

Gestire pacchetti Python con ambito sessione tramite i comandi %pip e %conda

È possibile usare i comuni comandi %pip e %conda per installare librerie di terze parti aggiuntive o librerie personalizzate durante la sessione del notebook di Apache Spark. In questa sezione vengono usati i comandi %pip per illustrare vari scenari comuni.

Nota

  • È consigliabile inserire i comandi %pip e %conda nella prima cella del notebook se si desidera installare nuove librerie. L'interprete Python verrà riavviato dopo la gestione della libreria a livello di sessione, per rendere effettive le modifiche.
  • Questi comandi di gestione delle librerie Python verranno disabilitati durante l'esecuzione di processi della pipeline. Se si desidera installare un pacchetto all'interno di una pipeline, è necessario sfruttare le funzionalità di gestione della libreria a livello di pool.
  • Le librerie Python con ambito sessione vengono installate automaticamente nei nodi driver e di lavoro.
  • I seguenti comandi %conda non sono supportati: create, clean, compare, activate, deactivate, run, package.
  • È possibile fare riferimento ai comandi %pip e ai comandi %conda per l'elenco completo dei comandi.

Installare un pacchetto di terze parti

È possibile installare facilmente una libreria Python da PyPI.

# Install vega_datasets
%pip install altair vega_datasets

Per verificare il risultato dell'installazione, è possibile eseguire il codice seguente per visualizzare 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()

Installare un pacchetto wheel dall'account di archiviazione

Per installare la libreria dall'archiviazione, è necessario montare nell'account di archiviazione eseguendo i comandi seguenti.

from notebookutils import mssparkutils  
 
mssparkutils.fs.mount(  
    "abfss://<<file system>>@<<storage account>.dfs.core.windows.net",  
    "/<<path to wheel file>>",  
    {"linkedService":"<<storage name>>"}  
) 

È quindi possibile usare il comando %pip install per installare il pacchetto wheel richiesto

%pip install /<<path to wheel file>>/<<wheel package name>>.whl

Installare un'altra versione della libreria predefinita

È possibile usare il comando seguente per vedere qual è la versione predefinita di un determinato pacchetto. Come esempio viene usato pandas

%pip show pandas

Il risultato è il log seguente:

Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...

È possibile usare il comando seguente per passare da pandas a un'altra versione, ad esempio 1.2.4

%pip install pandas==1.2.4

Disinstallare una libreria con ambito sessione

Se si desidera disinstallare un pacchetto installato in questa sessione del notebook, è possibile fare riferimento ai comandi seguenti. Tuttavia, non è possibile disinstallare i pacchetti predefiniti.

%pip uninstall altair vega_datasets --yes

Uso del comando %pip per installare librerie da un file requirement.txt

%pip install -r  /<<path to requirement file>>/requirements.txt

Pacchetti Java o Scala con ambito sessione

Per specificare pacchetti Java o Scala con ambito sessione, è possibile usare l'opzione %%configure:

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
    }
}

Nota

  • È consigliabile eseguire %%configure all'inizio del notebook. È possibile fare riferimento a questo documento per l'elenco completo dei parametri validi.

Pacchetti R con ambito sessione (Anteprima)

I pool di Azure Synapse Analytics includono numerose librerie R comuni predefinite. È anche possibile installare librerie di terze parti aggiuntive durante la sessione del notebook di Apache Spark.

Nota

  • Questi comandi di gestione delle librerie R verranno disabilitati durante l'esecuzione di processi della pipeline. Se si desidera installare un pacchetto all'interno di una pipeline, è necessario sfruttare le funzionalità di gestione della libreria a livello di pool.
  • Le librerie R con ambito sessione vengono installate automaticamente nei nodi driver e di lavoro.

Installare un pacchetto

È possibile installare facilmente una libreria R da CRAN.

# Install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

È anche possibile usare snapshot CRAN come repository per assicurarsi di scaricare ogni volta la stessa versione del pacchetto.

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

Uso di devtools per installare i pacchetti

La libreria devtools semplifica lo sviluppo di pacchetti per accelerare le attività comuni. Questa libreria viene installata all'interno del runtime predefinito di Azure Synapse Analytics.

È possibile usare devtools per specificare una versione specifica di una libreria da installare. Queste librerie verranno installate in tutti i nodi all'interno del cluster.

# Install a specific version. 
install_version("caesar", version = "1.0.0") 

Analogamente, è possibile installare una libreria direttamente da GitHub.

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Attualmente, le funzioni devtools seguenti sono supportate in Azure Synapse Analytics:

Comando Descrizione
install_github() Installa un pacchetto R da GitHub
install_gitlab() Installa un pacchetto R da GitLab
install_bitbucket() Installa un pacchetto R da BitBucket
install_url() Installa un pacchetto R da un URL arbitrario
install_git() Installa da un repository Git arbitrario
install_local() Installa da un file locale su disco
install_version() Installa da una versione specifica in CRAN

Visualizzare le librerie installate

È possibile eseguire query su tutte le librerie installate all'interno della sessione usando il comando library.

library()

È possibile usare la funzione packageVersion per controllare la versione della libreria:

packageVersion("caesar")

Rimuovere un pacchetto R da una sessione

È possibile usare la funzione detach per rimuovere una libreria dallo spazio dei nomi. Queste librerie rimangono su disco finché non vengono ricaricate.

# detach a library

detach("package: caesar")

Per rimuovere un pacchetto con ambito sessione da un notebook, usare il comando remove.packages(). Questa modifica della libreria non ha alcun impatto su altre sessioni nello stesso cluster. Gli utenti non possono disinstallare o rimuovere librerie integrate del runtime predefinito di Azure Synapse Analytics.

remove.packages("caesar")

Nota

Non è possibile rimuovere pacchetti di base come SparkR, SparklyR o R.

Librerie R con ambito sessione e SparkR

Le librerie con ambito notebook sono disponibili nei ruoli di lavoro 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)

Librerie R con ambito sessione e SparklyR

Con spark_apply() in SparklyR, è possibile usare qualsiasi pacchetto R all'interno di Spark. Per impostazione predefinita, in sparklyr::spark_apply(), l'argomento packages è impostato su FALSE. Questa operazione copia le librerie nei percorsi libPath correnti ai ruoli di lavoro, consentendo di importarle e usarle nei ruoli di lavoro. Ad esempio, è possibile eseguire quanto segue per generare un messaggio con crittografia Caesar con 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)

Passaggi successivi