Tutorial: Carregar dados e executar consultas em um cluster Apache Spark no Azure HDInsight

Neste tutorial, você aprenderá a criar um dataframe de um arquivo csv e a executar consultas de SQL Spark interativas em um cluster do Apache Spark no Azure HDInsight. No Spark, um dataframe é uma coleção distribuída de dados organizados em colunas nomeadas. O dataframe é conceitualmente equivalente a uma tabela em um banco de dados relacional ou uma estrutura de dados em R/Python.

Neste tutorial, você aprenderá como:

  • Criar um dataframe usando um arquivo CSV
  • Executar consultas no dataframe

Pré-requisitos

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

Criará um Jupyter Notebook

O Jupyter Notebook é um ambiente de notebook interativo que oferece suporte a várias linguagens de programação. O notebook permite que você interaja com seus dados, combine código com texto markdown e execute visualizações simples.

  1. Edite a URL https://SPARKCLUSTER.azurehdinsight.net/jupyter substituindo SPARKCLUSTER com pelo nome do seu cluster do Spark. Em seguida, insira a URL editada em um navegador da Web. Em caso de solicitação, insira as credenciais de logon do cluster.

  2. Na página da Web do Jupyter, para os clusters do Spark 2.4, Selecione Novo>PySpark para criar um notebook. Para a versão do Spark 3.1, selecione Novo>PySpark3 para criar um notebook 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 notebook é criado e aberto com o nome Untitled(Untitled.ipynb).

    Observação

    Ao usar o kernel do PySpark ou do PySpark3 para criar um notebook, a sessão spark será criada automaticamente quando você executar a primeira célula de código. Você não precisa criar a sessão explicitamente.

Criar um dataframe usando um arquivo CSV

Os aplicativos podem criar dataframes diretamente de arquivos ou pastas no armazenamento remoto, como o Armazenamento do Azure ou Azure Data Lake Storage; de uma tabela de Hive; ou de outras fontes de dados compatíveis com o Spark, como o Cosmos DB, BD SQL do Azure, DW, etc. A captura de tela a seguir mostra um instantâneo do arquivo HVAC.csv usado neste tutorial. O arquivo CSV vem com todos os clusters do Spark no HDInsight. Os dados capturam as variações de temperatura de algumas construções.

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 obrigatórios necessários para este cenário:

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

    Ao executar uma consulta interativa no Jupyter, a legenda da guia ou da janela do navegador da Web mostra um status (Ocupado) ao lado do título do notebook. Você também verá um círculo sólido ao lado do texto PySpark no canto superior direito. Após a conclusão do trabalho, isso será alterado para um círculo vazio.

    Status of interactive Spark SQL query

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

  3. Execute o seguinte código para criar um dataframe e uma tabela temporária (hvac) executando o código a seguir.

    # 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 dataframe

Depois que a tabela for criada, você poderá executar uma consulta interativa nos dados.

  1. Execute o seguinte código em uma célula vazia do notebook:

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

    A saída tabular a seguir é exibida.

    Table output of interactive Spark query result

  2. Você também pode ver os resultados em outras visualizações. Para ver um gráfico de área para a mesma saída, selecione Área e, em seguida, defina outros valores conforme mostrado.

    Area graph of interactive Spark query result

  3. Na barra de menus do notebook, navegue até Arquivo>Salvar e Ponto de Verificação.

  4. Se você estiver começando o próximo tutorial agora, deixe o bloco de anotações aberto. Se não estiver, desligue o notebook para lançar os recursos de cluster: na barra de menus do notebook, navegue até Arquivo>Fechar e Interromper.

Limpar os recursos

Com o HDInsight, seus dados e seus Jupyter Notebooks são armazenados no Armazenamento do Azure ou no Azure Data Lake Storage, de modo 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 os encargos para o cluster são muitas vezes maiores do que os encargos para armazenamento, faz sentido, do ponto de vista econômico, excluir os clusters quando não estiverem em uso. Se você planeja trabalhar no próximo tutorial imediatamente, convém manter o cluster.

Abra o cluster no portal do Azure e selecione Excluir.

Delete HDInsight cluster

Também é possível selecionar o nome do grupo de recursos para abrir a página do grupo de recursos, e depois selecionar Excluir grupo de recursos. Ao excluir o grupo de recursos, você exclui o cluster Spark do HDInsight e a conta de armazenamento padrão.

Próximas etapas

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