Processar dados executando scripts U-SQL no Azure Data Lake Analytics com o Azure Data Factory e o Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Um pipeline em um espaço de trabalho do Azure Data Factory ou do Synapse Analytics processa dados em serviços de armazenamento vinculados usando serviços de computação vinculados. Ele contém uma sequência de atividades onde cada atividade executa uma operação de processamento específica. Este artigo descreve a atividade U-SQL do Data Lake Analytics que executa um script U-SQL em um serviço vinculado de computação do Azure Data Lake Analytics.

Crie uma conta do Azure Data Lake Analytics antes de criar um pipeline com uma Atividade U-SQL do Data Lake Analytics. Para saber mais sobre o Azure Data Lake Analytics, consulte Introdução ao Azure Data Lake Analytics.

Adicionar uma atividade U-SQL para o Azure Data Lake Analytics a um pipeline com interface do usuário

Para usar uma atividade U-SQL para o Azure Data Lake Analytics em um pipeline, conclua as seguintes etapas:

  1. Procure Data Lake no painel Atividades do pipeline e arraste uma atividade U-SQL para a tela do pipeline.

  2. Selecione a nova atividade U-SQL na tela, se ainda não estiver selecionada.

  3. Selecione a guia Conta ADLA para selecionar ou criar um novo serviço vinculado do Azure Data Lake Analytics que será usado para executar a atividade U-SQL.

    Shows the UI for a U-SQL activity.

  4. Selecione a guia Script para selecionar ou criar um novo serviço vinculado de armazenamento e um caminho dentro do local de armazenamento, que hospedará o script.

    Shows the UI for the Script tab for a U-SQL activity.

Serviço vinculado do Azure Data Lake Analytics

Você cria um serviço vinculado do Azure Data Lake Analytics para vincular um serviço de computação do Azure Data Lake Analytics a um espaço de trabalho do Azure Data Factory ou Synapse Analytics . A atividade U-SQL do Data Lake Analytics no pipeline refere-se a esse serviço vinculado.

A tabela a seguir fornece descrições para as propriedades genéricas usadas na definição JSON.

Propriedade Descrição Necessário
tipo A propriedade type deve ser definida como: AzureDataLakeAnalytics. Sim
nomedaconta; Nome da conta do Azure Data Lake Analytics. Sim
dataLakeAnalyticsUri URI do Azure Data Lake Analytics. Não
subscriptionId Id de subscrição do Azure Não
resourceGroupName Nome do grupo de recursos do Azure Não

Autenticação do principal de serviço

O serviço vinculado do Azure Data Lake Analytics requer uma autenticação de entidade de serviço para se conectar ao serviço Azure Data Lake Analytics. Para usar a autenticação da entidade de serviço, registre uma entidade de aplicativo na ID do Microsoft Entra e conceda a ela o acesso à Análise Data Lake e ao Repositório Data Lake que ela usa. Para obter etapas detalhadas, consulte Autenticação de serviço a serviço. Anote os seguintes valores, que você usa para definir o serviço vinculado:

  • ID da aplicação
  • Chave de aplicação
  • ID de Inquilino do

Conceda permissão de entidade de serviço ao Azure Data Lake Analytics usando o Assistente para Adicionar Usuário.

Use a autenticação da entidade de serviço especificando as seguintes propriedades:

Propriedade Descrição Necessário
servicePrincipalId Especifique o ID do cliente do aplicativo. Sim
servicePrincipalKey Especifique a chave do aplicativo. Sim
inquilino Especifique as informações do locatário (nome de domínio ou ID do locatário) sob as quais seu aplicativo reside. Você pode recuperá-lo passando o mouse no canto superior direito do portal do Azure. Sim

Exemplo: autenticação da entidade de serviço

{
    "name": "AzureDataLakeAnalyticsLinkedService",
    "properties": {
        "type": "AzureDataLakeAnalytics",
        "typeProperties": {
            "accountName": "<account name>",
            "dataLakeAnalyticsUri": "<azure data lake analytics URI>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<optional, subscription id of ADLA>",
            "resourceGroupName": "<optional, resource group name of ADLA>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }       
    }
}

Para saber mais sobre o serviço vinculado, consulte Serviços vinculados de computação.

Atividade de U-SQL do Data Lake Analytics

O trecho JSON a seguir define um pipeline com uma Atividade U-SQL do Data Lake Analytics. A definição de atividade tem uma referência ao serviço vinculado do Azure Data Lake Analytics criado anteriormente. Para executar um script U-SQL do Data Lake Analytics, o serviço envia o script especificado para o Data Lake Analytics e as entradas e saídas necessárias são definidas no script para o Data Lake Analytics buscar e produzir.

{
    "name": "ADLA U-SQL Activity",
    "description": "description",
    "type": "DataLakeAnalyticsU-SQL",
    "linkedServiceName": {
        "referenceName": "<linked service name of Azure Data Lake Analytics>",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "scriptLinkedService": {
            "referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
            "type": "LinkedServiceReference"
        },
        "scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
        "degreeOfParallelism": 3,
        "priority": 100,
        "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
        }
    }   
}

A tabela a seguir descreve nomes e descrições de propriedades específicas para essa atividade.

Propriedade Descrição Necessário
nome Nome da atividade no pipeline Sim
descrição Texto descrevendo o que a atividade faz. Não
tipo Para a atividade U-SQL do Data Lake Analytics, o tipo de atividade é DataLakeAnalyticsU-SQL. Sim
linkedServiceName Serviço vinculado ao Azure Data Lake Analytics. Para saber mais sobre esse serviço vinculado, consulte o artigo Serviços vinculados de computação. Sim
scriptPath Caminho para a pasta que contém o script U-SQL. O nome do arquivo diferencia maiúsculas de minúsculas. Sim
scriptLinkedService Serviço vinculado que vincula o Repositório Azure Data Lake ou o Armazenamento do Azure que contém o script Sim
graudeparalelismo O número máximo de nós usados simultaneamente para executar o trabalho. Não
prioridade Determina quais trabalhos de todos os que estão na fila devem ser selecionados para serem executados primeiro. Quanto menor o número, maior a prioridade. Não
parâmetros Parâmetros para passar para o script U-SQL. Não
runtimeVersion Versão de tempo de execução do mecanismo U-SQL a ser usada. Não
modo de compilação

Modo de compilação do U-SQL. Deve ser um destes valores: Semântico: Execute apenas verificações semânticas e verificações de sanidade necessárias, Completo: Execute a compilação completa, incluindo verificação de sintaxe, otimização, geração de código, etc., SingleBox: Execute a compilação completa, com a configuração TargetType como SingleBox. Se você não especificar um valor para essa propriedade, o servidor determinará o modo de compilação ideal.

Não

Consulte SearchLogProcessing.txt para obter a definição de script.

Exemplo de script U-SQL

@searchlog =
    EXTRACT UserId          int,
            Start           DateTime,
            Region          string,
            Query           string,
            Duration        int,
            Urls            string,
            ClickedUrls     string
    FROM @in
    USING Extractors.Tsv(nullEscape:"#NULL#");

@rs1 =
    SELECT Start, Region, Duration
    FROM @searchlog
WHERE Region == "en-gb";

@rs1 =
    SELECT Start, Region, Duration
    FROM @rs1
    WHERE Start <= DateTime.Parse("2012/02/19");

OUTPUT @rs1   
    TO @out
      USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

No exemplo de script acima, a entrada e saída para o script é definida em @in e @out parâmetros. Os valores para parâmetros @in e @out no script U-SQL são passados dinamicamente pelo serviço usando a seção 'parameters'.

Você pode especificar outras propriedades, como degreeOfParallelism e priority, bem como em sua definição de pipeline para os trabalhos executados no serviço Azure Data Lake Analytics.

Parâmetros dinâmicos

Na definição de pipeline de exemplo, os parâmetros de entrada e saída são atribuídos com valores codificados.

"parameters": {
    "in": "/datalake/input/SearchLog.tsv",
    "out": "/datalake/output/Result.tsv"
}

Em vez disso, é possível usar parâmetros dinâmicos. Por exemplo:

"parameters": {
    "in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
    "out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}

Neste caso, os arquivos de entrada ainda são coletados da pasta /datalake/input e os arquivos de saída são gerados na pasta /datalake/output. Os nomes de arquivo são dinâmicos com base na hora de início da janela que está sendo passada quando o pipeline é acionado.

Consulte os seguintes artigos que explicam como transformar dados de outras maneiras: