Expandir scripts U-SQL com código Python no Azure Data Lake Analytics
Importante
O Azure Data Lake Analytics descontinuado a 29 de fevereiro de 2024. Saiba mais com este anúncio.
Para análise de dados, a sua organização pode utilizar o Azure Synapse Analytics ou o Microsoft Fabric.
Pré-requisitos
Antes de começar, certifique-se de que as extensões do Python estão instaladas na sua conta do Azure Data Lake Analytics.
- Navegue para a sua Conta de Data Lake Analytics no portal do Azure
- No menu esquerdo, em INTRODUÇÃO , selecione Scripts de Exemplo
- Selecione Instalar Extensões U-SQL e, em seguida, OK
Descrição Geral
As Extensões python para U-SQL permitem que os programadores executem uma execução paralela em massa do código Python. O exemplo seguinte ilustra os passos básicos:
- Utilize a
REFERENCE ASSEMBLY
instrução para ativar as extensões do Python para o Script U-SQL - Utilizar a
REDUCE
operação para particionar os dados de entrada numa chave - As extensões do Python para U-SQL incluem um redutores incorporados (
Extension.Python.Reducer
) que executa código Python em cada vértice atribuído ao redutor - O script U-SQL contém o código Python incorporado que tem uma função chamada
usqlml_main
que aceita um DataFrame do pandas como entrada e devolve um DataFrame do 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 no U-SQL
Tipos de dados
- As colunas de cadeia e numéricas do U-SQL são convertidas tal como estão entre o Pandas e o U-SQL
- Os Nulos do U-SQL são convertidos de e para valores do Pandas
NA
Esquemas
- Os vetores de índice no Pandas não são suportados no U-SQL. Todos os pacotes de dados de entrada na função Python têm sempre um índice numérico de 64 bits de 0 até ao número de linhas menos 1.
- Os conjuntos de dados U-SQL não podem ter nomes de coluna duplicados
- U-SQL datasets column names that aren't strings.
Versões do Python
Apenas o Python 3.5.1 (compilado para Windows) é suportado.
Módulos Standard do Python
Estão incluídos todos os módulos padrão do Python.
Mais módulos do Python
Para além das bibliotecas Padrão do Python, estão incluídas várias bibliotecas Python frequentemente utilizadas:
- pandas
- numpy
- numexpr
Mensagens de Exceção
Atualmente, uma exceção no código Python aparece como uma falha genérica do vértice. No futuro, as mensagens de erro da Tarefa U-SQL apresentarã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. Atualmente, esse limite é de 6 GB para uma AU. Uma vez que os DataFrames de entrada e saída têm de existir na memória no código Python, o tamanho total da entrada e saída não pode exceder os 6 GB.