Compartir a través de


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

Importante

Azure Data Lake Analytics se retiró el 29 de febrero de 2024. Obtenga más información con este anuncio.

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

Prerrequisitos

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

  • Vaya a la cuenta de Data Lake Analytics en Azure Portal.
  • En el menú de la izquierda, en GETTING STARTED seleccione Scripts de Muestra
  • Seleccione Instalar extensiones de U-SQL y luego Aceptar

Información general

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

  • Uso de la instrucción REFERENCE ASSEMBLY para habilitar extensiones de Python para el script U-SQL
  • Uso de la operación de REDUCE para particionar los datos de entrada en 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 U-SQL contiene el código de Python incrustado 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();

Integración de Python con U-SQL

Tipos de datos

  • Las columnas de cadena y numéricas de U-SQL se convierten as-is entre Pandas y U-SQL
  • Los valores NULL de U-SQL se convierten en y desde valores de Pandas NA

Esquemas

  • Los vectores de índice de Pandas no se admiten en U-SQL. Todos los marcos de datos de entrada de la función de Python siempre tienen un índice numérico de 64 bits desde 0 hasta el número de filas menos 1.
  • Los conjuntos de datos de U-SQL no pueden tener nombres de columna duplicados
  • Conjuntos de datos de U-SQL cuyos nombres de columna no son cadenas.

Versiones de Python

Solo se admite 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 usadas habitualmente:

  • Pandas
  • numpy
  • numexpr

Mensajes de excepción

Actualmente, una excepción en el código de Python se muestra como un error de vértice genérico. En el futuro, los mensajes de error del 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 asignada una cantidad limitada de memoria. Actualmente, ese límite es de 6 GB para un 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