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.

Próximas etapas