Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In genere, quando si aggiunge una libreria Python a un ambiente nel portale di Fabric, il calcolo Spark sottostante risolve e scarica il pacchetto e le relative dipendenze da PyPI. Tuttavia, quando un amministratore abilita la protezione dell'accesso in uscita per un'area di lavoro, l'ambiente di calcolo Spark non riesce a stabilire connessioni Internet in uscita. Qualsiasi tentativo di installazione di un pacchetto tramite il portale non riesce perché il calcolo non riesce a raggiungere PyPI o conda.
Per installare le librerie Python quando è abilitata la protezione dall'accesso in uscita, è necessario ottenere i pacchetti in Fabric tramite un percorso che non richiede l'accesso a Internet in uscita dal calcolo Spark. Questo articolo illustra due approcci:
- Caricare librerie personalizzate (scelta consigliata) — Scaricare i file wheel specifici necessari su un computer separato e caricarli direttamente nell'ambiente Fabric. Ideale quando è necessario un numero ridotto di pacchetti e si vuole un sovraccarico minimo dell'infrastruttura.
-
Ospitare un mirror PyPI : configurare una replica completa o parziale di PyPI in un account di archiviazione di Azure dietro la rete virtuale dell'organizzazione. Ideale per le organizzazioni che si basano su molti pacchetti PyPI e vogliono
pip installlavorare senza problemi legati alla gestione di singoli file wheel. Questo approccio richiede una maggiore configurazione e manutenzione in corso.
Caricare file di libreria personalizzati (scelta consigliata)
Quando la protezione dell'accesso in uscita è abilitata, Fabric non riesce a raggiungere PyPI per installare direttamente i pacchetti. Questo approccio consente di scaricare i pacchetti specifici necessari, insieme alle relative dipendenze, in un computer separato con accesso a Internet e quindi caricare i file wheel nell'ambiente fabric come librerie personalizzate.
Si compila un ambiente Python locale che corrisponde al runtime di Fabric in modo da pip risolvere le versioni di dipendenza corrette. Usare quindi pip download per recuperare solo i pacchetti aggiuntivi richiesti dal carico di lavoro (non i pacchetti già inclusi nel runtime).
Prerequisiti
Prima di iniziare, verificare di disporre di quanto segue:
Un computer Linux con accesso a Internet : è necessario un ambiente Linux per creare un ambiente Python locale e scaricare i file wheel. L'ambiente di calcolo Spark di Fabric viene eseguito in Linux (Azure Linux/Mariner), quindi è necessario usare Linux per garantire che conda risolva i pacchetti specifici della piattaforma corretti e
pip downloadrecupera le ruote compatibili. È possibile usare uno dei seguenti elementi:- Sottosistema Windows per Linux (WSL) nel PC Windows
- Un PC Linux o un portatile
- Una macchina virtuale Linux di Azure
Il file YML del runtime di Fabric — Scarica il file YML di Python della versione di runtime dal repository GitHub del runtime di Fabric.
- Runtime 1.2 (Spark 3.4):
Fabric-Python310-CPU.yml(Python 3.10) - Runtime 1.3 (Spark 3.5):
Fabric-Python311-CPU.yml(Python 3.11) - Runtime 2.0 (Spark 4.0):
Fabric-Python313-CPU.yml(Python 3.12)
- Runtime 1.2 (Spark 3.4):
Passaggio 1: Creare un file dei requisiti
Creare un requirements.txt file che elenca i pacchetti aggiuntivi necessari per il carico di lavoro che non sono già inclusi nel runtime di Fabric. Per esempio:
catboost==1.2.8
shap==0.44.0
È possibile verificare quali pacchetti sono già inclusi nel runtime esaminando i file YML nel repository GitHub del runtime di Fabric. Elenca solo i pacchetti mancanti o che richiedono una versione diversa.
Passaggio 2: Rimuovere librerie private dal file YML
Il file YML di runtime contiene librerie private ospitate da Microsoft che pip non è in grado di risolvere dai repository pubblici. Rimuovere queste librerie dal file prima di creare l'ambiente. Le librerie specifiche variano in base alla versione di runtime:
| Libreria | Runtime 1.2 | Runtime 1.3 | Runtime 2.0 |
|---|---|---|---|
azure-synapse-ml-predict |
Sì | -- | -- |
azureml-synapse |
Sì | Sì | Sì |
chat-magics |
Sì | Sì | -- |
chat-magics-fabric |
Sì | Sì | -- |
control-script |
-- | Sì | -- |
ds-copilot |
Sì | Sì | -- |
dscopilot-installer |
Sì | Sì | -- |
fabric-analytics-notebook-plugin |
-- | -- | Sì |
fabric-analytics-sdk |
-- | -- | Sì |
fabric-connection |
Sì | Sì | -- |
flaml |
Sì | Sì | Sì |
flt-python |
-- | Sì | Sì |
fsspec_wrapper |
Sì | Sì | Sì |
geoanalytics-fabric |
-- | Sì | Sì |
impulse-python-handler |
Sì | Sì | Sì |
kqlmagiccustom |
-- | Sì | Sì |
library-metadata-cooker |
Sì | Sì | Sì |
notebookutils |
Sì | Sì | Sì |
prose-pandas2pyspark |
-- | Sì | Sì |
prose-suggestions |
-- | Sì | Sì |
semantic-link-sempy |
Sì | Sì | Sì |
spark-mssql-connector-fabric35 |
-- | Sì | -- |
spark-mssql-connector-fabric40 |
-- | -- | Sì |
sqlanalyticsconnectorpy |
Sì | -- | -- |
sqlanalyticsfabricconnectorpy |
Sì | Sì | Sì |
synapseml |
-- | -- | Sì |
synapseml-* |
Sì | Sì | Sì |
Passaggio 3: Creare un ambiente Python locale che corrisponda al runtime di Fabric
Nel computer Linux configurare un ambiente conda che rispecchia il runtime di Fabric. Ciò garantisce la pip risoluzione delle versioni di dipendenza corrette per i pacchetti.
Scaricare e installare Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3 export PATH="$HOME/miniconda3/bin:$PATH"Installare i compilatori C/C++ necessari per alcuni pacchetti Python durante l'installazione. In Ubuntu/Debian:
sudo apt-get update sudo apt-get -yq install gcc g++Per altre distribuzioni, usare lo strumento di gestione pacchetti equivalente,
tdnfad esempio in Linux di Azure.Usare il file YML modificato da un passaggio precedente per creare un ambiente conda. Nell'esempio seguente viene usato il file di installazione di Runtime 1.3. Sostituire il nome file YML con quello per la versione di runtime.
conda env create -n fabric-env -f Fabric-Python311-CPU.yml conda activate fabric-env
Passaggio 4: Scaricare i file wheel per i pacchetti
Utilizzare pip download per scaricare i file wheel per i pacchetti richiesti e tutte le relative dipendenze in una directory locale. Questo comando risolve le versioni rispetto all'ambiente conda creato nel passaggio precedente.
mkdir wheels
pip download -r requirements.txt -d wheels
Al termine del comando, la directory wheels contiene i file .whl per ogni pacchetto e le sue dipendenze.
Passaggio 5: Caricare i file Wheel nel tuo ambiente Fabric
Caricare i file wheel scaricati nell'ambiente fabric come librerie personalizzate:
- Nel portale Fabric, vai al tuo ambiente di lavoro e apri l'ambiente.
- Selezionare Librerie personalizzate nel pannello sinistro.
- Selezionare Carica e scegliere i
.whlfile dallawheelsdirectory. - Selezionare Pubblica per applicare le modifiche.
Ospitare un mirror PyPI su Azure Storage
Questo approccio configura una replica completa o parziale di PyPI in un account di archiviazione di Azure accessibile dallo spazio di lavoro Fabric tramite un endpoint privato. Dopo la configurazione, l'ambiente di calcolo Spark di Fabric può risolvere e installare direttamente i pacchetti, proprio come un normale pip install , senza dover accedere a Internet in uscita.
Annotazioni
Uno specchio PyPI è più adatto per le organizzazioni che si appoggiano a molti pacchetti PyPI e preferiscono che pip install funzioni senza dover gestire singoli file wheel. Questo approccio richiede maggiore impegno iniziale e manutenzione continuativa per mantenere il mirror sincronizzato con PyPI.
Prerequisiti
Prima di iniziare, verificare di disporre di quanto segue:
- Un computer Linux con accesso a Internet : usato per eseguire lo strumento di mirroring e caricare pacchetti. È possibile usare WSL, un PC Linux o una macchina virtuale Linux di Azure.
- Un account di archiviazione di Azure : ospita i pacchetti con mirroring. Deve essere accessibile dalla tua area di lavoro Fabric tramite un endpoint privato.
-
Bandersnatch : uno strumento di mirroring PyPI che scarica i pacchetti e genera i file di indice necessari
pip. - Un'utilità di caricamento di file — Azure CLI, AzCopy o Blobfuse2 per caricare il mirror nell'account di archiviazione.
Importante
Il repository PyPI completo è di grandi dimensioni e in continua crescita (vedere Statistiche PyPI). La sincronizzazione iniziale può richiedere da 8 a 48 ore a seconda della velocità di rete, dell'hardware e dell'I/O del disco. Le sincronizzazioni successive scaricano solo pacchetti nuovi o modificati e sono molto più veloci.
Bandersnatch supporta i plug-in di filtro che consentono di eseguire il mirroring solo dei pacchetti necessari. Ad esempio, se il mirror è solo per Fabric, è possibile escludere i file binari di Windows per ridurre l'ora di archiviazione e sincronizzazione. Valutare queste opzioni in base al caso d'uso.
Passaggio 1: Installare Python e Bandersnatch
Nel computer Linux installare Python (se non è già disponibile) e Bandersnatch:
# Download and install Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
export PATH="$HOME/miniconda3/bin:$PATH"
# Install Bandersnatch
pip install bandersnatch
Passaggio 2: Configurare ed eseguire la sincronizzazione mirror
Creare un file di configurazione Bandersnatch. Per informazioni di riferimento, vedere la configurazione di esempio .
Eseguire quindi il comando mirror. In questo modo viene eseguita una sincronizzazione una tantum che scarica i pacchetti da PyPI al file system locale:
bandersnatch --config <path-to-bandersnatch.conf> mirror
Al termine della sincronizzazione, la directory mirror contiene i file del pacchetto e la struttura di indice necessari pip :
/home/trusted-service-user/bandersnatch1/web/
├── simple/
├── pypi/
├── packages/
├── local-stats/
└── json/
Passaggio 3: Verificare il mirror locale (facoltativo)
È possibile verificare il funzionamento del mirror avviando un server HTTP locale e installando un pacchetto da esso:
cd <path-to-mirror-directory>
python -m http.server 8000
# In a separate terminal, test installing a package from the local mirror
pip install <package-name> --index-url http://localhost:8000/simple
Passaggio 4: Caricare il mirror in Azure Storage
Abilitare l'hosting di siti Web statici nell'account di archiviazione di Azure. In questo modo è possibile ospitare le pagine di indice PyPI necessarie a pip per risolvere i pacchetti. L'abilitazione di questa funzionalità crea automaticamente un $web contenitore.
Usando l'interfaccia della riga di comando di Azure, AzCopy o Blobfuse2, caricare tutte e cinque le cartelle (simple, pypi, packages, local-stats e json) nel contenitore $web . Tutte le cartelle devono trovarsi nello stesso contenitore perché le pagine di indice in simple/ usano collegamenti relativi ai file di riferimento in packages/.
Passaggio 5: Connettere Fabric al mirror
Per consentire al calcolo Spark di Fabric di raggiungere l'account di archiviazione, aggiungere due endpoint privati gestiti nelle impostazioni dell'area di lavoro di Fabric: uno per l'endpoint blob e uno per l'endpoint web (sito web statico) dell'account di archiviazione.
Installare quindi i pacchetti dal mirror usando l'URL del sito Web statico dell'account di archiviazione. Per trovare questo URL, passare all'account di archiviazione nel portale di Azure e selezionare Sito Web statico in Gestione dati. L'URL è simile a https://<storage-account-name>.z<number>.web.core.windows.net, dove il numero di zona varia in base all'area.
È possibile puntare pip a questo mirror tramite un file YAML di ambiente o un comando inline %pip in un notebook:
File YAML in un ambiente:
dependencies: - pip - pip: - --index-url https://<static-website-url>/simple - pytest==8.2.2Comando inline in un notebook:
%pip install pytest --index-url https://<static-website-url>/simple