Gestire le librerie per pool di Apache Spark in Azure Synapse Analytics

Dopo aver identificato i pacchetti Scala, Java, R (anteprima) o Python da usare o aggiornare per l'applicazione Spark, è possibile installarli o rimuoverli in un pool di Spark. Le librerie a livello di pool sono disponibili per tutti i notebook e i processi in esecuzione nel pool.

Esistono due modi principali per installare una libreria in un pool di Spark:

  • Installare una libreria dell'area di lavoro caricata come pacchetto dell'area di lavoro.
  • Per aggiornare le librerie Python, fornire una specifica di ambiente requirements.txt o Conda environment.yml per installare pacchetti da repository come PyPI, Conda-Forge e altro ancora. Per altre informazioni, vedere la sezione relativa alla specifica dell'ambiente.

Dopo aver salvato le modifiche, un processo Spark eseguirà l'installazione e memorizzerà nella cache l'ambiente risultante per un riutilizzo successivo. Al termine del processo, i nuovi processi Spark o sessioni di notebook useranno le librerie del pool aggiornate.

Importante

  • Se il pacchetto da installare è di grandi dimensioni o richiede molto tempo per l'installazione, questo influirà sul tempo di avvio dell'istanza di Spark.
  • La modifica della versione di PySpark, Python, Scala/Java, .NET, R, o Spark non è supportata.
  • L'installazione di pacchetti da repository esterni come PyPI, Conda-Forge o i canali Conda predefiniti non è supportata nelle aree di lavoro abilitate per la protezione dall'esfiltrazione dei dati.

Gestire i pacchetti da Synapse Studio o dal portale di Azure

Le librerie del pool di Spark possono essere gestite da Synapse Studio o dal portale di Azure.

Per aggiornare o aggiungere librerie a un pool di Spark:

  1. Andare all'area di lavoro di Azure Synapse Analytics dal portale di Azure.

    Se si esegue l'aggiornamento dal portale di Azure:

    • Nella sezione Risorse di Synapse selezionare la scheda Pool di Apache Spark e selezionare un pool di Spark nell'elenco.

    • Selezionare i pacchetti nella sezione Impostazioni del pool di Spark. Screenshot that highlights the upload environment configuration file button.

    Se si esegue l'aggiornamento da Synapse Studio:

    • Selezionare Gestisci nel pannello di navigazione principale e quindi selezionare Pool di Apache Spark.

    • Selezionare la sezione Pacchetti per un pool di Spark specifico. Screenshot that highlights the logs of library installation.

  2. Per le librerie di feed Python, caricare il file di configurazione dell'ambiente usando il selettore di file nella sezione Pacchetti della pagina.

  3. È anche possibile selezionare altri pacchetti dell'area di lavoro per aggiungere file Jar, Wheel o Tar.gz al pool.

  4. È anche possibile rimuovere i pacchetti deprecati dalla sezione Pacchetti dell'area di lavoro. Il pool non allegherà più questi pacchetti.

  5. Dopo aver salvato le modifiche, verrà attivato un processo di sistema per installare e memorizzare le librerie specificate nella cache. Questo processo consente di ridurre il tempo di avvio complessivo della sessione.

  6. Al termine del processo, tutte le nuove sessioni preleveranno le librerie del pool aggiornate.

Importante

Selezionando l'opzione Forza nuove impostazioni, si termineranno tutte le sessioni correnti per il pool di Spark selezionato. Al termine delle sessioni, è necessario attendere il riavvio del pool.

Se questa impostazione è deselezionata, sarà necessario attendere che la sessione Spark corrente venga terminata o arrestata manualmente. Una volta terminata la sessione, sarà necessario consentire il riavvio del pool.

Tenere traccia dello stato dell'installazione

Viene avviato un processo Spark riservato per il sistema ogni volta che un pool viene aggiornato con un nuovo set di librerie. Questo processo Spark consente di monitorare lo stato dell'installazione della libreria. Se l'installazione non riesce a causa di conflitti della libreria o altri problemi, il pool di Spark ripristina lo stato precedente o predefinito.

Inoltre, gli utenti possono anche esaminare i log di installazione per identificare i conflitti di dipendenza o vedere quali librerie sono state installate durante l'aggiornamento del pool.

Per visualizzare questi log:

  1. Passare all'elenco delle applicazioni Spark nella scheda Monitoraggio.
  2. Selezionare il processo dell'applicazione Spark di sistema corrispondente all'aggiornamento del pool. Questi processi di sistema vengono eseguiti con il titolo SystemReservedJob-LibraryManagement. Screenshot that highlights system reserved library job.
  3. Passare alla vista dei log driver e stdout.
  4. Nei risultati verranno visualizzati i log correlati all'installazione delle dipendenze. Screenshot that highlights system reserved library job results.

Formati di specifica dell'ambiente

PIP requirements.txt

È possibile usare un file requirements.txt (output del comando pip freeze) per aggiornare l'ambiente. Quando un pool viene aggiornato, i pacchetti elencati in questo file vengono scaricati da PyPI. Le dipendenze complete vengono quindi memorizzate nella cache e salvate per il riutilizzo successivo del pool.

Il frammento di codice seguente mostra il formato per il file dei requisiti. Il nome del pacchetto PyPI è elencato insieme a una versione esatta. Questo file segue il formato descritto nella documentazione di riferimento di blocco pip.

In questo esempio viene aggiunta una versione specifica.

absl-py==0.7.0
adal==1.2.1
alabaster==0.7.10

Formato YML

Inoltre, è possibile fornire un file environment.yml per aggiornare l'ambiente del pool. I pacchetti elencati in questo file vengono scaricati dai canali Conda, Conda-Forge e PyPI predefiniti. È possibile specificare altri canali o rimuovere i canali predefiniti usando le opzioni di configurazione.

Questo esempio specifica i canali e le dipendenze Conda/PyPI.

name: stats2
channels:
- defaults
dependencies:
- bokeh
- numpy
- pip:
  - matplotlib
  - koalas==1.7.0

Per informazioni dettagliate sulla creazione di un ambiente da questo file environment.yml, vedere Creazione di un ambiente da un file di environment.yml.

Passaggi successivi