Tutorial: Carregar dados e executar consultas num cluster do Apache Spark no Azure HDInsight

Neste tutorial, você aprenderá como criar um dataframe a partir de um arquivo csv e como executar consultas interativas do Spark SQL em um cluster Apache Spark no Azure HDInsight. No Spark, um pacote de dados é uma coleção distribuída de dados organizados em colunas com nomes. Do ponto de vista conceptual, o pacote de dados equivale a uma tabela numa base de dados relacional ou a um pacote de dados em R/Python.

Neste tutorial, irá aprender a:

  • Criar um pacote de dados a partir de um ficheiro CSV
  • Executar consultas no pacote de dados

Pré-requisitos

Um cluster do Apache Spark no HDInsight. Consulte Criar um cluster do Apache Spark.

Criar um Bloco de Notas do Jupyter Notebook

O Jupyter Notebook é um ambiente de bloco de notas interativo que suporta várias linguagens de programação. O bloco de notas permite-lhe interagir com os seus dados, combinar código com texto markdown e realizar visualizações simples.

  1. Edite o URL https://SPARKCLUSTER.azurehdinsight.net/jupyter substituindo SPARKCLUSTER pelo nome do cluster do Spark. Em seguida, insira o URL editado em um navegador da Web. Se lhe for pedido, introduza as credenciais de início de sessão do cluster.

  2. Na página da Web do Jupyter, Para os clusters do Spark 2.4, selecione Novo>PySpark para criar um bloco de anotações. Para a versão do Spark 3.1, selecione Novo>PySpark3 para criar um bloco de anotações porque o kernel do PySpark não está mais disponível no Spark 3.1.

    Create a Jupyter Notebook to run interactive Spark SQL query.

    Um novo bloco de anotações é criado e aberto com o nome Untitled(Untitled.ipynb).

    Nota

    Usando o kernel PySpark ou PySpark3 para criar um bloco de anotações, a spark sessão é criada automaticamente para você quando você executa a primeira célula de código. Não precisa de criar explicitamente a sessão.

Criar um pacote de dados a partir de um ficheiro CSV

Os aplicativos podem criar dataframes diretamente de arquivos ou pastas no armazenamento remoto, como o Armazenamento do Azure ou o Armazenamento do Azure Data Lake; de uma mesa de colmeia; ou de outras fontes de dados suportadas pelo Spark, como Azure Cosmos DB, Azure SQL DB, DW e assim por diante. A seguinte captura de ecrã mostra um instantâneo do ficheiro HVAC.csv utilizado neste tutorial. O ficheiro CSV é fornecido com todos os clusters do Spark no HDInsight. Os dados ilustram as variações de temperatura de alguns edifícios.

Snapshot of data for interactive Spark SQL query.

  1. Cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione SHIFT + ENTER para executar o código. O código importa os tipos necessários para este cenário:

    from pyspark.sql import *
    from pyspark.sql.types import *
    

    Quando executa uma consulta interativa no Jupyter, a janela do browser ou a legenda do separador apresenta o estado (Ocupado), juntamente com o título do bloco de notas. Também vê um círculo sólido junto ao texto do PySpark no canto superior direito. Após a conclusão da tarefa, este é alterado para um círculo vazio.

    Status of interactive Spark SQL query.

  2. Observe a ID da sessão retornada. Na imagem acima, o ID da sessão é 0. Se desejar, você pode recuperar os detalhes da sessão navegando até https://CLUSTERNAME.azurehdinsight.net/livy/sessions/ID/statements onde CLUSTERNAME é o nome do cluster do Spark e ID é o número da ID da sessão.

  3. Execute o seguinte código para criar um pacote de dados e uma tabela temporária (hvac) ao utilizar o seguinte código.

    # Create a dataframe and table from sample data
    csvFile = spark.read.csv('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv', header=True, inferSchema=True)
    csvFile.write.saveAsTable("hvac")
    

Executar consultas no pacote de dados

Após a criação da tabela, pode executar uma consulta interativa nos dados.

  1. Execute o seguinte código numa célula vazia do bloco de notas:

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    

    É apresentado o seguinte resultado em forma de tabela.

    Table output of interactive Spark query result.

  2. Também pode ver os resultados noutras visualizações. Para ver um gráfico de área do mesmo resultado, selecione Area (Área) e, em seguida, defina outros valores, conforme mostrado.

    Area graph of interactive Spark query result.

  3. Na barra de menus do bloco de anotações, navegue até Salvar arquivo>e Ponto de verificação.

  4. Se tenciona iniciar o próximo tutorial agora, deixe o bloco de notas aberto. Caso contrário, desligue o bloco de anotações para liberar os recursos do cluster: na barra de menus do bloco de anotações, navegue até Fechar e Parar Arquivo>.

Clean up resources (Limpar recursos)

Com o HDInsight, seus dados e Jupyter Notebooks são armazenados no Armazenamento do Azure ou no Armazenamento do Azure Data Lake, para que você possa excluir com segurança um cluster quando ele não estiver em uso. Você também é cobrado por um cluster HDInsight, mesmo quando ele não está em uso. Como as cobranças para o cluster são muitas vezes mais do que as taxas para armazenamento, faz sentido econômico excluir clusters quando eles não estão em uso. Se tenciona começar já a trabalhar no próximo tutorial, convém manter o cluster.

Abra o cluster no portal do Azure e, em seguida, selecione Eliminar.

Delete HDInsight cluster.

Também pode selecionar o nome do grupo de recursos para abrir a página do grupo de recursos e, em seguida, selecionar Eliminar grupo de recursos. Ao eliminar o grupo de recursos, está a eliminar o cluster do Spark no HDInsight e a conta de armazenamento predefinida.

Próximos passos

Neste tutorial, você aprendeu como criar um dataframe a partir de um arquivo csv e como executar consultas interativas do Spark SQL em um cluster Apache Spark no Azure HDInsight. Avance para o próximo artigo para ver como os dados registrados no Apache Spark podem ser extraídos para uma ferramenta de análise de BI, como o Power BI.