Partilhar via


Estender scripts U-SQL com código Python no Azure Data Lake Analytics

Importante

O Azure Data Lake Analytics foi desativado em 29 de fevereiro de 2024. Saiba mais com este anúncio.

Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.

Pré-requisitos

Antes de começar, verifique se as extensões Python estão instaladas em sua conta do Azure Data Lake Analytics.

  • Navegue até sua conta do Data Lake Analytics no portal do Azure
  • No menu à esquerda, em INTRODUÇÃO , selecione Scripts de exemplo
  • Selecione Instalar extensões U-SQL e, em seguida, OK

Visão geral

As extensões Python para U-SQL permitem que os desenvolvedores executem massivamente a execução paralela de código Python. O exemplo a seguir ilustra as etapas básicas:

  • Use a REFERENCE ASSEMBLY instrução para habilitar extensões Python para o script U-SQL
  • Usando a REDUCE operação para particionar os dados de entrada em uma chave
  • As extensões 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 incorporado que tem uma função chamada usqlml_main que aceita um pandas DataFrame como entrada e retorna um pandas DataFrame 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 ao U-SQL

Tipos de dados

  • String e colunas numéricas do U-SQL são convertidas as-is entre Pandas e U-SQL
  • Nulos U-SQL são convertidos de e para valores Pandas NA

Esquemas

  • Os vetores de índice no Pandas não são suportados 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 colunas duplicados
  • Conjuntos de dados U-SQL nomes de coluna que não são cadeias de caracteres.

Versões Python

Apenas Python 3.5.1 (compilado para Windows) é suportado.

Módulos Python padrão

Todos os módulos Python padrão estão incluídos.

Mais módulos 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 de vértice genérico. 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 uma UA. Como os DataFrames de entrada e saída devem existir na memória no código Python, o tamanho total da entrada e saída não pode exceder 6 GB.

Próximos passos