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 presente quanto segue:

  • 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 i pacchetti Python con ambito sessione:

  1. Passare al pool di Spark selezionato e assicurarsi di avere abilitato le librerie a livello di sessione. È possibile abilitare questa impostazione passando alla scheda Gestisci>pacchetti delpool> di Apache Spark. Screenshot dell'abilitazione dei pacchetti di sessione.
  2. Dopo aver applicato l'impostazione, è possibile aprire un notebook e selezionare Configura pacchetti di sessione>. Screenshot della specifica dei pacchetti di sessione.Screenshot del caricamento del file Yml.
  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 i pacchetti Python con ambito sessione tramite i comandi %pip e %conda

È possibile usare i comandi %pip e %conda più diffusi 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 diversi scenari comuni.

Nota

  • È consigliabile inserire i comandi %pip e %conda nella prima cella del notebook se si vogliono installare nuove librerie. L'interprete Python verrà riavviato dopo la gestione della libreria a livello di sessione per rendere effettive le modifiche.
  • Questi comandi per la gestione delle librerie Python verranno disabilitati durante l'esecuzione dei processi della pipeline. Se si vuole installare un pacchetto all'interno di una pipeline, è necessario sfruttare le funzionalità di gestione delle librerie a livello di pool.
  • Le librerie Python con ambito sessione vengono installate automaticamente nei nodi driver e di lavoro.
  • I comandi %conda seguenti non sono supportati: creare, pulire, confrontare, attivare, disattivare, eseguire, pacchetto.
  • È 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 l'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 necessario

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

Installare un'altra versione della libreria predefinita

È possibile usare il comando seguente per visualizzare la versione predefinita di un determinato pacchetto. Si usa pandas come esempio

%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 vuole disinstallare un pacchetto, installato in questa sessione del notebook, è possibile fare riferimento ai comandi seguenti. Non è tuttavia possibile disinstallare i pacchetti predefiniti.

%pip uninstall altair vega_datasets --yes

Uso del comando %pip per installare librerie da un file direquirement.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)

Azure Synapse pool di Analisi includono molte 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 dei processi della pipeline. Se si vuole installare un pacchetto all'interno di una pipeline, è necessario sfruttare le funzionalità di gestione delle librerie 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 la stessa versione del pacchetto ogni volta.

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

Uso di devtools per installare i pacchetti

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

È 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 seguenti devtools 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() Esegue l'installazione 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 library comando .

library()

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

packageVersion("caesar")

Rimuovere un pacchetto R da una sessione

È possibile usare la detach funzione 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 remove.packages() comando . Questa modifica della libreria non ha alcun impatto su altre sessioni nello stesso cluster. Gli utenti non possono disinstallare o rimuovere librerie predefinite del runtime di Azure Synapse Analytics predefinito.

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 imposta su FALSE. Le librerie vengono copiate nei percorsi libPath correnti nei ruoli di lavoro, consentendo di importarli e usarli nei ruoli di lavoro. Ad esempio, è possibile eseguire quanto segue per generare un messaggio cesare crittografato 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