Tutorial: carregar dados e executar consultas em um cluster do 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.
Edite a URL
https://SPARKCLUSTER.azurehdinsight.net/jupyter
substituindoSPARKCLUSTER
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.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.
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 Azure 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.
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.
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.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.
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.
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.
Na barra de menus do notebook, navegue até Arquivo>Salvar e Ponto de Verificação.
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.
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.