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.

Passaggi successivi