Transformar os dados na nuvem usando uma atividade Spark no Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Neste tutorial, você pode usar o Portal do Azure para criar um pipeline do Azure Data Factory. Este pipeline transforma os dados usando uma atividade Spark e um serviço vinculado do Azure HDInsight sob demanda.

Neste tutorial, você realizará os seguintes procedimentos:

  • Criar um data factory.
  • Crie um pipeline que usa uma atividade Spark.
  • Dispare uma execução de pipeline.
  • Monitorar a execução de pipeline.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

  • Conta de Armazenamento do Azure. Você cria um script Python e um arquivo de entrada e os carrega no Armazenamento do Azure. A saída do programa Spark é armazenada nessa conta de armazenamento. O cluster do Spark sob demanda usa a mesma conta de armazenamento que o respectivo armazenamento primário.

Observação

O HDInsight dá suporte somente a contas de armazenamento para uso geral com a camada Standard. Garanta que a conta não seja uma conta de armazenamento Premium ou somente de Blob.

Carregar o script Python em sua conta de Armazenamento de Blobs

  1. Crie um arquivo de Python chamado WordCount_Spark.py com o seguinte conteúdo:

    import sys
    from operator import add
    
    from pyspark.sql import SparkSession
    
    def main():
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' ')) \
            .map(lambda x: (x, 1)) \
            .reduceByKey(add)
        counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount")
    
        spark.stop()
    
    if __name__ == "__main__":
        main()
    
  2. Substitua <storageAccountName> pelo nome da sua conta de Armazenamento do Azure. Em seguida, salve o arquivo.

  3. No Armazenamento de Blobs do Azure, crie um contêiner denominado adftutorial, se ele não existir.

  4. Crie uma pasta chamada spark.

  5. Crie uma subpasta chamada script na pasta spark.

  6. Carregue o arquivo WordCount_Spark.py na subpasta script.

Carregue o arquivo de entrada

  1. Crie um arquivo chamado minecraftstory.txt com um pouco de texto. O programa Spark conta o número de palavras no texto.
  2. Criar uma subpasta chamada inputfiles na pasta spark.
  3. Carregue o arquivo minecraftstory.txt na subpasta inputfiles.

Criar um data factory

Siga as etapas do artigo Guia de Início Rápido: Criar um data factory usando o portal do Azure para criar um data factory, caso ainda não tenha um para usar.

Criar serviços vinculados

Você cria dois serviços vinculados nesta seção:

  • Um serviço vinculado do Armazenamento do Azure que vincula uma conta de Armazenamento do Azure ao data factory. Esse armazenamento é usado pelo cluster HDInsight sob demanda. Ele também contém o script Spark a ser executado.
  • Um serviço vinculado do HDInsight sob demanda. O Azure Data Factory cria automaticamente um cluster HDInsight e executa o programa Spark. Em seguida, ele exclui o cluster HDInsight após o cluster ficar ocioso por um tempo pré-configurado.

Criar um serviço vinculado do Armazenamento do Azure

  1. Na home page, alterne para a guia Gerenciar no painel esquerdo.

    Screenshot that shows the Manage tab.

  2. Selecione Conexões na parte inferior da janela e, depois, selecione + Novo.

    Buttons for creating a new connection

  3. Na janela Novo Serviço Vinculado, selecione Armazenamento de Dados>Armazenamento de Blobs do Azure e selecione Continuar.

    Selecting the "Azure Blob Storage" tile

  4. Em Nome da conta de Armazenamento, selecione o nome na lista e selecione Salvar.

    Box for specifying the storage account name

Criar um serviço vinculado do HDInsight sob demanda

  1. Selecione o botão + Novo novamente para criar outro serviço vinculado.

  2. Na janela Novo Serviço Vinculado, selecione Computação>Azure HDInsight e selecione Continuar.

    Selecting the "Azure HDInsight" tile

  3. Na janela Novo Serviço Vinculado, execute as seguintes etapas:

    a. Para Name, insira AzureHDInsightLinkedService.

    b. Para Tipo, confirme se HDInsight sob demanda está selecionado.

    c. Para Serviço Vinculado do Armazenamento do Microsoft Azure, selecione AzureBlobStorage1. Você criou esse serviço vinculado anteriormente. Se você usou um nome diferente, especifique o nome correto aqui.

    d. Para o campo Tipo de cluster, selecione spark.

    e. Para Id da entidade de serviço, insira a ID da entidade de serviço que tem permissão para criar um cluster do HDInsight.

    Essa entidade de serviço precisa ser um membro da função de Colaborador de assinatura ou o grupo de recursos em que o cluster é criado. Para obter mais informações, consulte Criar uma entidade de serviço e um aplicativo do Microsoft Entra. A ID da entidade de serviço é equivalente à ID do aplicativo e uma Chave de entidade de serviço é equivalente ao valor de um Segredo do cliente.

    f. Para Chave da entidade de serviço, insira a chave.

    g. Para Grupo de recursos, selecione o mesmo grupo de recursos que você usou ao criar o data factory. O cluster Spark é criado nesse grupo de recursos.

    h. Expandir o Tipo de sistema operacional.

    i. Insira um nome para o Nome de usuário do cluster.

    j. Insira a Senha do cluster para o usuário.

    k. Selecione Concluir.

    HDInsight linked service settings

Observação

O Azure HDInsight limita o número total de núcleos que você pode usar em cada região do Azure a qual ele dá suporte. Para o serviço vinculado do HDInsight sob demanda, o cluster HDInsight é criado na mesma localização do Armazenamento do Azure usada como o armazenamento primário. Verifique se você tem cotas de núcleo suficientes para que o cluster seja criado com êxito. Para obter mais informações, consulte Configurar clusters no HDInsight com Hadoop, Spark, Kafka e mais.

Criar um pipeline

  1. Selecione o botão + (adição) e escolha Pipeline no menu.

    Buttons for creating a new pipeline

  2. Na caixa de ferramentas Atividades, expanda HDInsight. Arraste a atividade Spark da caixa de ferramentas Atividades para a superfície do designer do pipeline.

    Dragging the Spark activity

  3. Na parte inferior da janela de propriedades da atividade Spark, execute as seguintes etapas:

    a. Troque para a guia HDI Cluster.

    b. Selecione AzureHDInsightLinkedService (criado no procedimento anterior).

    Specifying the HDInsight linked service

  4. Alterne para a guia Script/Jar e execute estas etapas:

    a. Para Serviço Vinculado do Trabalho, selecione AzureBlobStorage1.

    b. Selecione Procurar Armazenamento.

    Specifying the Spark script on the "Script/Jar" tab

    c. Procure na pasta adftutorial/spark/script, selecione WordCount_Spark.py e selecione Concluir.

  5. Para validar o pipeline, selecione o botão Validar na barra de ferramentas. Selecione a >> (seta para a direita) para fechar a janela de validação.

    "Validate" button

  6. Selecione Publicar Tudo. A IU de Data Factory publica entidades (serviços vinculados e pipeline) para o serviço Azure Data Factory.

    "Publish All" button

Disparar uma execução de pipeline

Selecione Adicionar gatilho na barra de ferramentas e selecione Disparar Agora.

"Trigger" and "Trigger Now" buttons

Monitorar a execução de pipeline

  1. Alterne para a guia Monitorar. Verifique se o pipeline está sendo executado. Leva aproximadamente 20 minutos para criar um cluster Spark.

  2. Selecione Atualizar periodicamente para verificar o status da execução do pipeline.

    Tab for monitoring pipeline runs, with "Refresh" button

  3. Para ver as execuções de atividade associadas com a execução de pipeline, selecione Exibir as Execuções de Atividade na coluna Ações.

    Pipeline run status

    Você pode alternar novamente para o modo de execução do pipeline selecionando o link Todas as execuções de pipelines na parte superior.

    "Activity Runs" view

Verificar a saída

Verifique se o arquivo de saída é criado na pasta spark/outputfiles/wordcount no contêiner do adftutorial.

Location of the output file

O arquivo deve ter cada palavra do texto do arquivo de entrada e o número de vezes que a palavra apareceu no arquivo. Por exemplo:

(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)

Neste exemplo, o pipeline transforma dados usando a atividade Spark e um serviço vinculado do HDInsight sob demanda. Você aprendeu a:

  • Criar um data factory.
  • Crie um pipeline que usa uma atividade Spark.
  • Dispare uma execução de pipeline.
  • Monitorar a execução de pipeline.

Avance para o próximo tutorial para aprender como transformar dados executando o script Hive em um cluster do Azure HDInsight que está em uma rede virtual: