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.

Passos seguintes