Estendere gli script U-SQL con il codice Python in Azure Data Lake Analytics
Importante
Azure Data Lake Analytics ritirato il 29 febbraio 2024. Altre informazioni con questo annuncio.
Per l'analisi dei dati, l'organizzazione può usare Azure Synapse Analytics o Microsoft Fabric.
Prerequisiti
Prima di iniziare, verificare che le estensioni di Python siano installate nell'account di Azure Data Lake Analytics.
- Passare all'account Data Lake Analytics nell'portale di Azure
- Nel menu a sinistra selezionareScript di esempio
- Selezionare Installa estensioni U-SQL e quindi OK
Panoramica
Le estensioni Python per U-SQL consentono agli sviluppatori di effettuare esecuzioni parallele elevate del codice Python. L'esempio seguente illustra i passaggi di base:
- Usare l'istruzione
REFERENCE ASSEMBLY
per abilitare le estensioni Python per lo script U-SQL - Uso dell'operazione
REDUCE
per partizionare i dati di input in una chiave - Le estensioni Python per U-SQL includono un riduttore predefinito (
Extension.Python.Reducer
) che esegue il codice Python in ogni vertice assegnato al riduttore - Lo script U-SQL contiene il codice Python incorporato che include una funzione denominata
usqlml_main
che accetta un intervallo di dati Pandas come input e restituisce un intervallo di dati Pandas come output.
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def get_mentions(tweet):
return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )
def usqlml_main(df):
del df['time']
del df['author']
df['mentions'] = df.tweet.apply(get_mentions)
del df['tweet']
return df
";
@t =
SELECT * FROM
(VALUES
("D1","T1","A1","@foo Hello World @bar"),
("D2","T2","A2","@baz Hello World @beer")
) AS date, time, author, tweet );
@m =
REDUCE @t ON date
PRODUCE date string, mentions string
USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @m
TO "/tweetmentions.csv"
USING Outputters.Csv();
Come Python si integra con U-SQL
Tipi di dati
- Le colonne stringa e numeriche di U-SQL vengono convertite come sono tra Pandas e U-SQL
- I valori Null di U-SQL vengono convertiti in e da valori
NA
di Pandas
Schemi
- I vettori di indice in Pandas non sono supportati in U-SQL. Tutti i frame di dati di input della funzione Python hanno sempre un indice numerico a 64 bit compreso tra 0 e il numero di righe meno 1.
- I set di dati U-SQL non possono avere nomi di colonna duplicati
- Nomi di colonna dei set di dati U-SQL che non sono stringhe.
Versioni di Python
È supportato solo Python 3.5.1 (compilato per Windows).
Moduli standard di Python
Sono inclusi tutti i moduli di Python standard.
Altri moduli Python
Oltre alle librerie Python standard, sono incluse diverse librerie Python comunemente usate:
- pandas
- numpy
- numexpr
Messaggi di eccezione
Attualmente un'eccezione nel codice Python viene visualizzata come errore di vertice generico. In futuro i messaggi di errore dei processi U-SQL visualizzeranno il messaggio dell'eccezione Python.
Limitazioni delle dimensioni di input e output
A ogni vertice è assegnata una quantità di memoria limitata, che attualmente corrisponde a 6 GB per AU. Poiché i dataframe di input e output devono esistere in memoria nel codice Python, le dimensioni totali per l'input e l'output non possono superare 6 GB.