Compartilhar via


Tutorial: Criar um pipeline de dados de ponta a ponta para obter insights de vendas no Azure HDInsight

Nesse tutorial, você criará um pipeline de dados de ponta a ponta que executa operações de extração, transformação e carregamento (ETL). O pipeline usa clusters Apache Spark e Apache Hive em execução no Azure HDInsight para consultar e manipular os dados. Você também usará tecnologias como Azure Data Lake Storage Gen2 para armazenamento de dados e Power BI para visualização.

Esse pipeline de dados combina dados de vários repositórios, remove dados indesejados, anexa novos dados e carrega os dados de volta ao seu armazenamento para visualizar informações de negócios. Para obter mais informações sobre pipelines ETL, consulte Extrair, transformar e carregar em escala.

Captura de tela mostrando a arquitetura de extração, transformação e carregamento.

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

Pré-requisitos

Criar recursos

Essa seção mostra como criar recursos.

Clonar o repositório com scripts e dados

  1. Entre em sua assinatura do Azure. Se pretender usar o Azure Cloud Shell, selecione Experimentar no canto superior direito do bloco de código. Caso contrário, insira o seguinte comando:

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Verifique se você é membro da função do Azure Proprietário. Substitua user@contoso.com pela sua conta e insira o comando:

    az role assignment list \
    --assignee "user@contoso.com" \
    --role "Owner"
    

    Se nenhum registro for retornado, você não é membro e não poderá concluir esse tutorial.

  3. Baixe os dados e os scripts deste tutorial no repositório de ETL de insights de vendas do HDInsight. Insira o seguinte comando:

    git clone https://github.com/Azure-Samples/hdinsight-sales-insights-etl.git
    cd hdinsight-sales-insights-etl
    
  4. Verifique se salesdata scripts templates foram criados. Verifique com o seguinte comando:

    ls
    

Implantar os recursos do Azure necessários para o pipeline

  1. Adicione permissões de execução para todos os scripts inserindo o comando:

    chmod +x scripts/*.sh
    
  2. Definir variáveis para um grupo de recursos. Substitua RESOURCE_GROUP_NAME pelo nome de um grupo de recursos existente ou novo e insira o comando:

    RESOURCE_GROUP="RESOURCE_GROUP_NAME"
    
  3. Execute o script. Substitua LOCATION pelo valor desejado e insira o comando:

    ./scripts/resources.sh $RESOURCE_GROUP LOCATION
    

    Se você não tiver certeza de qual região especificar, recupere uma lista de regiões com suporte para sua assinatura usando o comando az account list-locations.

    O comando implanta os seguintes recursos:

    • Uma conta de Armazenamento de Blobs do Azure. Essa conta contém os dados de vendas da empresa.
    • Uma conta do Data Lake Storage Gen2. Essa conta serve como conta de armazenamento para ambos os clusters HDInsight. Leia mais sobre o HDInsight e o Data Lake Storage Gen2 na integração do Azure HDInsight ao Data Lake Storage Gen2.
    • Uma identidade gerenciada atribuída ao usuário. Essa conta fornece aos clusters HDInsight o acesso à conta do Data Lake Storage Gen2.
    • Um cluster do Apache Spark. Esse cluster é utilizado para limpar e transformar os dados brutos.
    • Um cluster Interactive Query do Apache Hive. Você pode usar esse cluster para consultar os dados de vendas e visualizá-los com o Power BI.
    • Uma rede virtual do Azure com suporte para regras de grupo de segurança de rede. Essa rede virtual permite que os clusters se comuniquem e protejam suas comunicações.

A criação do cluster pode levar cerca de 20 minutos.

A senha padrão para acesso ao protocolo Secure Shell (SSH) aos clusters é Thisisapassword1. Caso deseje alterar a senha, vá até o arquivo ./templates/resourcesparameters_remainder.json e altere a senha para os parâmetros sparksshPassword, sparkClusterLoginPassword, llapClusterLoginPassword e llapsshPassword.

Verificar a implantação e coletar informações de recursos

  1. Se você quiser verificar o status da implantação, acesse o grupo de recursos no portal do Azure. Em Configurações, selecione Implantações. Em seguida, selecione sua implantação. Aqui você pode ver os recursos implantados com sucesso e os recursos que ainda estão em andamento.

  2. Para exibir os nomes dos clusters, digite o seguinte comando:

    SPARK_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.sparkClusterName.value')
    LLAP_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    
    echo "Spark Cluster" $SPARK_CLUSTER_NAME
    echo "LLAP cluster" $LLAP_CLUSTER_NAME
    
  3. Para exibir a conta de armazenamento e a chave de acesso do Azure, insira o seguinte comando:

    BLOB_STORAGE_NAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
    
    blobKey=$(az storage account keys list \
        --account-name $BLOB_STORAGE_NAME \
        --resource-group $RESOURCE_GROUP \
        --query [0].value -o tsv)
    
    echo $BLOB_STORAGE_NAME
    echo $BLOB_KEY
    
  4. Para exibir a conta e a chave de acesso do Azure Data Lake Storage Gen2, insira o seguinte comando:

    ADLSGEN2STORAGENAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')
    
    ADLSKEY=$(az storage account keys list \
        --account-name $ADLSGEN2STORAGENAME \
        --resource-group $RESOURCE_GROUP \
        --query [0].value -o tsv)
    
    echo $ADLSGEN2STORAGENAME
    echo $ADLSKEY
    

Criar uma data factory

O Azure Data Factory é uma ferramenta que ajuda a automatizar Azure Pipelines. Não é a única maneira de realizar essas tarefas, mas é uma ótima forma de automatizar esses processos. Para obter mais informações sobre o Data Factory, consulte a documentação do Data Factory.

Esse data factory tem um pipeline com duas atividades:

  • A primeira atividade copia os dados do Armazenamento de Blobs para a conta de armazenamento do Data Lake Storage Gen 2 para simular a ingestão de dados.
  • A segunda atividade transforma os dados no cluster Spark. O script transforma os dados removendo colunas indesejadas. Ele também acrescenta uma nova coluna que calcula a receita que uma única transação gera.

Para configurar seu pipeline do Data Factory, execute o seguinte comando. Você ainda deve estar no diretório hdinsight-sales-insights-etl.

BLOB_STORAGE_NAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
ADLSGEN2STORAGENAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')

./scripts/adf.sh $RESOURCE_GROUP $ADLSGEN2STORAGENAME $BLOB_STORAGE_NAME

Esse script executa as seguintes ações:

  1. Cria uma entidade de serviço com permissões Storage Blob Data Contributor na conta de armazenamento do Data Lake Storage Gen2.
  2. Obtém um token de autenticação para autorizar solicitações POST para a API REST do sistema de arquivos do Data Lake Storage Gen2.
  3. Preenche o nome real de sua conta de armazenamento do Data Lake Storage Gen2 nos arquivos sparktransform.py e query.hql.
  4. Obtém chaves de armazenamento para as contas do Data Lake Storage Gen2 e Armazenamento de Blobs.
  5. Cria outra implantação de recurso para criar um pipeline do Data Factory com seus serviços vinculados e atividades associados. Ela passa as chaves de armazenamento como parâmetros para o arquivo de modelo, de modo que os serviços vinculados possam acessar as contas de armazenamento corretamente.

Executar o pipeline de dados

Essa seção mostra como executar o pipeline de dados.

Disparar atividades do Data Factory

A primeira atividade no pipeline do Data Factory que você criou move os dados do Armazenamento de Blobs para o Data Lake Storage Gen2. A segunda atividade aplica as transformações do Spark nos dados e salva os arquivos .csv transformados em uma nova localização. O pipeline inteiro pode levar alguns minutos para ser concluído.

Para recuperar o nome do Data Factory, digite o seguinte comando:

cat resourcesoutputs_adf.json | jq -r '.properties.outputs.factoryName.value'

Para disparar o pipeline, você tem duas opções. Você poderá:

  • Dispare o pipeline do Data Factory no PowerShell. Substitua RESOURCEGROUP e DataFactoryName pelos valores apropriados e execute os seguintes comandos:

    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
    
    $resourceGroup="RESOURCEGROUP"
    $dataFactory="DataFactoryName"
    
    $pipeline =Invoke-AzDataFactoryV2Pipeline `
        -ResourceGroupName $resourceGroup `
        -DataFactory $dataFactory `
        -PipelineName "IngestAndTransform"
    
    Get-AzDataFactoryV2PipelineRun `
        -ResourceGroupName $resourceGroup  `
        -DataFactoryName $dataFactory `
        -PipelineRunId $pipeline
    

    Execute novamente Get-AzDataFactoryV2PipelineRun conforme necessário para monitorar o progresso.

    Ou você pode:

  • Abra o data factory e selecione Criar e Monitorar. Dispare o pipeline IngestAndTransform no portal. Para obter informações sobre como disparar pipelines por meio do portal, confira Criar clusters do Apache Hadoop sob demanda no HDInsight usando o Azure Data Factory.

Para verificar se o pipeline foi executado, siga uma das etapas a seguir:

  • Vá até a seção Monitorar no data factory por meio do portal.
  • No Gerenciador de Armazenamento do Microsoft Azure, acesse sua conta de armazenamento Data Lake Storage Gen2. Acesse o sistema de arquivos files e depois a pasta transformed. Verifique o conteúdo da pasta para ver se o pipeline foi concluído com êxito.

Para obter outras maneiras de transformar dados usando o HDInsight, veja artigo sobre como usar o Jupyter Notebook.

Criar uma tabela no cluster da Consulta Interativa para exibir dados no Power BI

  1. Copie o arquivo query.hql para o cluster LLAP usando o comando de cópia segura (SCP). Insira o comando:

    LLAP_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    scp scripts/query.hql sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net:/home/sshuser/
    

    Lembrete: A senha padrão é Thisisapassword1.

  2. Use SSH para acessar o cluster LLAP. Insira o seguinte comando:

    ssh sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net
    
  3. Use o comando a seguir para executar o script:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f query.hql
    

    Esse script cria uma tabela gerenciada no cluster de Consulta Interativa que você pode acessar no Power BI.

Criar um dashboard do Power BI dos dados de vendas

  1. Abra o Power BI Desktop.

  2. No menu, acesse Obter dados>Mais...>Azure>Consulta Interativa do HDInsight.

  3. Selecione Conectar.

  4. No diálogo Consulta Interativa do HDInsight:

    1. Na caixa de texto Servidor, digite o nome do cluster LLAP no formato https://LLAPCLUSTERNAME.azurehdinsight.net.
    2. Na caixa de texto banco de dados, insira padrão.
    3. Selecione OK.
  5. No diálogo AzureHive:

    1. Na caixa de texto Nome de usuário, insira administrador.
    2. Na caixa de texto Senha, insira Thisisapassword1.
    3. Selecione Conectar.
  6. No Navegador, selecione sales ou sales_raw para visualizar os dados. Depois que os dados forem carregados, você poderá experimentar o painel que deseja criar. Para começar a usar os painéis do Power BI, confira os seguintes artigos:

Limpar os recursos

Se você não quiser continuar usando esse aplicativo, exclua todos os recursos para não ser cobrado por eles.

  1. Para remover o grupo de recursos, insira o comando:

    az group delete -n $RESOURCE_GROUP
    
  2. Para remover a entidade de serviço, insira os comandos:

    SERVICE_PRINCIPAL=$(cat serviceprincipal.json | jq -r '.name')
    az ad sp delete --id $SERVICE_PRINCIPAL
    

Próxima etapa