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.