Esercitazione: Introduzione all'estensione di U-SQL con PythonTutorial: Get started with extending U-SQL with Python

PrerequisitiPrerequisites

Prima di iniziare, verificare che le estensioni di Python vengono installate nell'account di Azure Data Lake Analitica.Before you begin, ensure the Python extensions are installed in your Azure Data Lake Analytics account.

  • Passare all'utente Account Data Lake Analitica nel portale di AzureNavigate to you Data Lake Analytics Account in the Azure portal
  • Nel menu a sinistra, sotto Introduzione fare clic su gli script di esempioIn the left menu, under GETTING STARTED click on Sample Scripts
  • Fare clic su installare le estensioni U-SQL quindi OKClick Install U-SQL Extensions then OK

PanoramicaOverview

Le estensioni Python per U-SQL consentono agli sviluppatori di effettuare esecuzioni parallele elevate del codice Python.Python Extensions for U-SQL enable developers to perform massively parallel execution of Python code. L'esempio seguente illustra i passaggi di base:The following example illustrates the basic steps:

  • Usare l'istruzione REFERENCE ASSEMBLY per abilitare le estensioni Python per lo script U-SQLUse the REFERENCE ASSEMBLY statement to enable Python extensions for the U-SQL Script
  • Uso dell'operazione REDUCE per partizionare i dati di input in una chiaveUsing the REDUCE operation to partition the input data on a key
  • Le estensioni Python per U-SQL includono un riduttore predefinito (Extension.Python.Reducer) che esegue il codice Python in ogni vertice assegnato al riduttoreThe Python extensions for U-SQL include a built-in reducer (Extension.Python.Reducer) that runs Python code on each vertex assigned to the reducer
  • 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.The U-SQL script contains the embedded Python code that has a function called usqlml_main that accepts a pandas DataFrame as input and returns a pandas DataFrame as 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 
           D( 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-SQLHow Python Integrates with U-SQL

Tipi di datiDatatypes

  • Le colonne stringa e numeriche di U-SQL vengono convertite come sono tra Pandas e U-SQLString and numeric columns from U-SQL are converted as-is between Pandas and U-SQL
  • I valori Null di U-SQL vengono convertiti in e da valori NA di PandasU-SQL Nulls are converted to and from Pandas NA values

SchemiSchemas

  • I vettori indice di Pandas non sono supportati in U-SQL.Index vectors in Pandas are not supported 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.All input data frames in the Python function always have a 64-bit numerical index from 0 through the number of rows minus 1.
  • I set di dati di U-SQL non possono avere nomi di colonna duplicati.U-SQL datasets cannot have duplicate column names
  • Nomi di colonna dei set di dati di U-SQL che non sono stringhe.U-SQL datasets column names that are not strings.

Versioni di PythonPython Versions

È supportato solo Python 3.5.1 (compilato per Windows).Only Python 3.5.1 (compiled for Windows) is supported.

Moduli standard di PythonStandard Python modules

Sono inclusi tutti i moduli di Python standard.All the standard Python modules are included.

Altri moduli di PythonAdditional Python modules

Oltre alle librerie di Python standard, sono incluse diverse librerie di Python di uso frequente:Besides the standard Python libraries, several commonly used python libraries are included:

pandas
numpy
numexpr

Messaggi di eccezioneException Messages

Attualmente un'eccezione nel codice Python viene visualizzata come errore di vertice generico.Currently, an exception in Python code shows up as generic vertex failure. In futuro i messaggi di errore dei processi U-SQL visualizzeranno il messaggio dell'eccezione Python.In the future, the U-SQL Job error messages will display the Python exception message.

Limitazioni delle dimensioni di input e outputInput and Output size limitations

A ogni vertice è assegnata una quantità di memoria limitata,Every vertex has a limited amount of memory assigned to it. che attualmente corrisponde a 6 GB per AU.Currently, that limit is 6 GB for an AU. Poiché devono esistere intervalli di dati di input e di output in memoria nel codice Python, le dimensioni totali per l'input e per l'output non possono superare i 6 GB.Because the input and output DataFrames must exist in memory in the Python code, the total size for the input and output cannot exceed 6 GB.

Vedere anche See also