Partilhar via


Transformar dados na cloud através de uma atividade do Spark no Azure Data Factory

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!

Neste tutorial, irá utilizar o portal do Azure para criar um pipeline do Azure Data Factory. Este pipeline transforma dados através de uma atividade do Spark e de um serviço ligado do Azure HDInsight a pedido.

Vai executar os seguintes passos neste tutorial:

  • Criar uma fábrica de dados.
  • Criar um pipeline que utiliza uma atividade do Spark.
  • Acionar uma execução de pipeline.
  • Monitorizar a execução do pipeline.

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

Pré-requisitos

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

  • Conta de armazenamento do Azure. Tem de criar um script Python e um ficheiro de entrada, e carregá-los para o Armazenamento do Azure. A saída do programa Spark é armazenada nesta conta de armazenamento. O cluster do Spark a pedido utiliza a mesma conta de armazenamento como o respetivo armazenamento primário.

Nota

O HdInsight suporta apenas contas de armazenamento para fins gerais com o escalão standard. Confirme que a conta não é uma conta de armazenamento apenas de blobs ou premium.

Carregar o script Python para a conta de armazenamento de Blobs

  1. Crie um ficheiro Python com o nome 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, guarde o ficheiro.

  3. No armazenamento de Blobs do Azure, crie um contentor com o nome adftutorial, caso ainda não exista.

  4. Crie uma pasta com o nome spark.

  5. Crie uma subpasta com o nome script na pasta spark.

  6. Carregue o ficheiro WordCount_Spark.py para a subpasta script.

Carregue o ficheiro de entrada

  1. Crie um ficheiro com o nome minecraftstory.txt com algum texto. O programa Spark conta o número de palavras neste texto.
  2. Crie uma subpasta com o nome inputfiles na pasta spark.
  3. Carregue o ficheiro minecraftstory.txt para a subpasta inputfiles.

Criar uma fábrica de dados

Siga as etapas no artigo Guia de início rápido: criar uma fábrica de dados usando o portal do Azure para criar uma fábrica de dados se você ainda não tiver uma com a qual trabalhar.

Criar serviços ligados

Nesta secção, vai criar dois serviços ligados:

  • Um serviço ligado do Armazenamento do Azure que liga uma conta de armazenamento do Azure à fábrica de dados. Este armazenamento é utilizado pelo cluster do HDInsight a pedido. Também contém o script Spark que vai ser executado.
  • Um serviço ligado do HDInsight a pedido. O Azure Data Factory cria automaticamente um cluster do HDInsight e executa o programa Spark. Em seguida, elimina o cluster do HDInsight depois de o cluster estar inativo durante um período de tempo pré-configurado.

Criar um serviço ligado do Armazenamento do Azure

  1. Na página inicial, alterne para a guia Gerenciar no painel esquerdo.

    Screenshot that shows the Manage tab.

  2. Selecione Ligações, na parte inferior da janela, e selecione + Novo.

    Buttons for creating a new connection

  3. Na janela Novo Serviço Ligado, selecione Arquivo de Dados>Armazenamento de Blobs do Azure e, em seguida, Continuar.

    Selecting the "Azure Blob Storage" tile

  4. Para Nome da conta de armazenamento, selecione o nome na lista e, em seguida, selecione Guardar.

    Box for specifying the storage account name

Crie um serviço ligado do HDInsight a pedido

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

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

    Selecting the "Azure HDInsight" tile

  3. Na janela Novo Serviço Ligado, conclua os passos abaixo:

    a. Para Nome, introduza AzureHDInsightLinkedService.

    b. Para Tipo, confirme se está selecionado HDInsight a pedido.

    c. Para o Serviço Vinculado de Armazenamento do Azure, selecione AzureBlobStorage1. Criou este serviço ligado anteriormente. Se utilizou um nome diferente, especifique o nome correto aqui.

    d. Para Tipo de cluster, selecione spark.

    e. Para ID do principal de serviço, introduza o ID do principal de serviço que tem permissão para criar um cluster do HDInsight.

    Este principal de serviço tem de ser membro da função de Contribuinte da subscrição ou do grupo de recursos no qual o cluster é criado. Para obter mais informações, consulte Criar um aplicativo e entidade de serviço do Microsoft Entra. A ID da entidade de serviço é equivalente à ID do aplicativo e uma chave da entidade de serviço é equivalente ao valor de um segredo do cliente.

    f. Para Chave do principal de serviço, introduza a chave.

    g. Para Grupo de recursos, selecione o mesmo grupo de recursos que utilizou ao criar a fábrica de dados. O cluster do Spark é criado neste grupo de recursos.

    h. Expandir tipo de SO.

    i. Introduza um nome para o Nome do utilizador do cluster.

    j. Introduza a Palavra-passe do cluster do utilizador.

    k. Selecione Concluir.

    HDInsight linked service settings

Nota

O Azure HDInsight limita o número total de núcleos que pode utilizar em cada região do Azure que suporta. Para o serviço ligado do HDInsight a pedido, o cluster do HDInsight é criado na mesma localização do Armazenamento do Azure utilizado como armazenamento principal. Certifique-se de que tem um número suficiente de quotas de núcleo para o cluster ser criado com êxito. Para obter mais informações, veja Configurar clusters no HDInsight com o Hadoop, Spark, Kafka e muito mais.

Criar um pipeline

  1. Selecione o botão + (mais) e, em seguida, selecione Pipeline no menu.

    Buttons for creating a new pipeline

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

    Dragging the Spark activity

  3. Nas propriedades da janela de atividade do Spark na parte inferior, conclua os seguintes passos:

    a. Mude para o separador HDI Cluster.

    b. Selecione AzureHDInsightLinkedService, (criado no procedimento anterior).

    Specifying the HDInsight linked service

  4. Mude para o separador Script/Jar e conclua os seguintes passos:

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

    b. Selecione Procurar no Armazenamento.

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

    c. Navegue para a pasta adftutorial/spark/script, selecione WordCount_Spark.py e, em seguida, selecione Concluir.

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

    "Validate" button

  6. Selecione Publicar Tudo. A IU do Data Factory publica as entidades (serviços ligados e pipeline) no serviço Azure Data Factory.

    "Publish All" button

Acionar uma execução de pipeline

Selecione Adicionar gatilho na barra de ferramentas e, em seguida, selecione Gatilho agora.

"Trigger" and "Trigger Now" buttons

Monitorizar a execução do pipeline.

  1. Alterne para a guia Monitor . Confirme se você vê um pipeline em execução. Demora aproximadamente de 20 minutos para criar um cluster do Spark.

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

    Tab for monitoring pipeline runs, with "Refresh" button

  3. Para ver as execuções de atividades associadas à execução do pipeline, selecione Ver Execuções de Atividades, na coluna Ações.

    Pipeline run status

    Você pode voltar para a visualização de execuções de pipeline selecionando o link Todas as execuções de pipeline na parte superior.

    "Activity Runs" view

Verificar a saída

Verifique se o ficheiro de saída é criado na pasta spark/otuputfiles/wordcount do contentor adftutorial.

Location of the output file

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

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

O pipeline, neste exemplo, transforma dados através de uma atividade do Spark e de um serviço ligado do HDInsight a pedido. Aprendeu a:

  • Criar uma fábrica de dados.
  • Criar um pipeline que utiliza uma atividade do Spark.
  • Acionar uma execução de pipeline.
  • Monitorizar a execução do pipeline.

Para aprender a transformar dados ao executar o script Hive num cluster do Azure HDInsight numa rede virtual, avance para o tutorial seguinte: