Compartir vía


Extensión de los scripts de U-SQL con código Python en Azure Data Lake Analytics

Importante

Azure Data Lake Analytics retiró el 29 de febrero de 2024. Más información sobre este anuncio.

Para el análisis de datos, su organización puede usar Azure Synapse Analytics o Microsoft Fabric.

Requisitos previos

Antes de comenzar, asegúrese de que están instaladas las extensiones de Python en su cuenta de Azure Data Lake Analytics.

  • Vaya a la cuenta de Data Lake Analytics en el Azure Portal
  • En el menú de la izquierda, en INTRODUCCIÓN, seleccione Scripts de ejemplo.
  • Seleccione Install U-SQL Extensions (Instalar extensiones de U-SQL ) y, a continuación, aceptar.

Información general

Las extensiones de Python para U-SQL permiten a los desarrolladores realizar la ejecución en paralelo de forma masiva de código Python. En el ejemplo siguiente se muestran los pasos básicos:

  • Uso de la instrucción REFERENCE ASSEMBLY para habilitar las extensiones de Python para el script de U-SQL
  • Uso de la operación REDUCE para la partición de datos de entrada de una clave
  • Las extensiones de Python para U-SQL incluyen un reductor integrado (Extension.Python.Reducer) que ejecuta código de Python en cada vértice asignado al reductor
  • El script de U-SQL contiene el código de Python insertado que tiene una función denominada usqlml_main que acepta un DataFrame de Pandas como entrada y devuelve un DataFrame de Pandas como salida.
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();

¿Cómo se integra Python con U-SQL?

Tipos de datos

  • Columnas numéricas y de cadena de U-SQL convertidas tal cual entre pandas y U-SQL
  • Los valores Null de U-SQL se conviernten a valores NA de Pandas y viceversa

Esquemas

  • Los vectores de índice de Pandas no se admiten en U-SQL. Todas las tramas de datos de entrada en la función Python siempre tienen un índice numérico de 64 bits comprendido entre 0 y el número de filas menos 1.
  • Los conjuntos de datos de U-SQL no pueden tener nombres de columna duplicados
  • Los nombres de columna de los conjuntos de datos U-SQL que no son cadenas.

Versiones de Python

Se admite solo Python 3.5.1 (compilado para Windows).

Módulos estándar de Python

Se incluyen todos los módulos estándar de Python.

Más módulos de Python

Además de las bibliotecas estándar de Python, se incluyen varias bibliotecas de Python de uso frecuente:

  • Pandas
  • numpy
  • numexpr

Mensajes de excepción

Actualmente, se muestra una excepción en el código de Python como un error genérico de vértices. En el futuro, los mensajes de error de trabajo de U-SQL mostrarán el mensaje de excepción de Python.

Limitaciones de tamaño de entrada y salida

Cada vértice tiene una cantidad limitada de memoria asignada a él. Actualmente, ese límite es de 6 GB para AU. Dado que los dataframes de entrada y salida deben existir en memoria en el código de Python, el tamaño total de la entrada y salida no puede superar los 6 GB.

Pasos siguientes