Estender scripts U-SQL com código Python no Azure Data Lake Analytics
Importante
O Azure Data Lake Analytics desativado em 29 de fevereiro de 2024. Saiba mais nesse comunicado.
Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.
Pré-requisitos
Antes de começar, certifique-se de que as extensões de Python estejam instaladas na sua conta do Azure Data Lake Analytics.
- Navegue até a conta do Data Lake Analytics no portal do Azure
- No menu à esquerda, em INTRODUÇÃO , selecione Scripts de Exemplo
- Selecione Instalar Extensões do U-SQL e OK
Visão geral
As extensões do Python para o U-SQL permitem aos desenvolvedores a realização de execução massivamente paralela do código Python. O exemplo a seguir ilustra as etapas básicas:
- Use a instrução
REFERENCE ASSEMBLY
para habilitar as extensões Python para o Script U-SQL - Usando a operação
REDUCE
para particionar os dados de entrada em uma chave - As extensões do Python para U-SQL incluem um redutor interno (
Extension.Python.Reducer
) que executa o código Python em cada vértice atribuído ao redutor - O script U-SQL contém o código Python inserido, que tem uma função chamada
usqlml_main
que aceita um DataFrame pandas como entrada e retorna um DataFrame pandas como saída.
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();
Como o Python se integra com o U-SQL
Tipos de dados
- As cadeias de caracteres e colunas numéricas do U-SQL são convertidas como estão entre Pandas e U-SQL
- Os Nulos do U-SQL são convertidos de/para valores Pandas
NA
Esquemas
- Não há suporte para vetores de índice no Pandas no U-SQL. Todos os quadros de dados de entrada na função Python sempre têm um índice numérico de 64 bits de 0 até o número de linhas menos 1.
- Os conjuntos de dados U-SQL não podem ter nomes de coluna duplicados
- Nomes de coluna de conjuntos de dados U-SQL que não são cadeias de caracteres.
Versões do Python
Há suporte somente para o Python 3.5.1 (compilado para Windows).
Módulos de Python Standard
Todos os módulos de Python padrão estão incluídos.
Mais módulos do Python
Além das bibliotecas Python padrão, várias bibliotecas Python comumente usadas estão incluídas:
- pandas
- numpy
- numexpr
Mensagens de Exceção
Atualmente, uma exceção no código Python aparece como falha genérica de vértice. No futuro, as mensagens de erro do trabalho U-SQL exibirão a mensagem de exceção do Python.
Limitações de tamanho de Entrada e Saída
Cada vértice tem uma quantidade limitada de memória atribuída a ele. Atualmente, esse limite é de 6 GB para um AU. Como os DataFrames de entrada e saída devem existir na memória no código Python, o tamanho total da entrada e da saída não pode exceder 6 GB.