Tutorial: Carregar dados e executar consultas em um cluster Apache Spark no Azure HDInsightTutorial: Load data and run queries on an Apache Spark cluster in 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.In this tutorial, you learn how to create a dataframe from a csv file, and how to run interactive Spark SQL queries against an Apache Spark cluster in Azure HDInsight. No Spark, um dataframe é uma coleção distribuída de dados organizados em colunas nomeadas.In Spark, a dataframe is a distributed collection of data organized into named columns. O dataframe é conceitualmente equivalente a uma tabela em um banco de dados relacional ou uma estrutura de dados em R/Python.Dataframe is conceptually equivalent to a table in a relational database or a data frame in R/Python.

Neste tutorial, você aprenderá como:In this tutorial, you learn how to:

  • Criar um dataframe usando um arquivo CSVCreate a dataframe from a csv file
  • Executar consultas no dataframeRun queries on the dataframe

Pré-requisitosPrerequisites

Um cluster do Apache Spark no HDInsight.An Apache Spark cluster on HDInsight. Veja Criar um cluster do Apache Spark.See Create an Apache Spark cluster.

Criar um notebook JupyterCreate a Jupyter notebook

O Jupyter Notebook é um ambiente de notebook interativo que oferece suporte a várias linguagens de programação.Jupyter Notebook is an interactive notebook environment that supports various programming languages. O notebook permite que você interaja com seus dados, combine código com texto markdown e execute visualizações simples.The notebook allows you to interact with your data, combine code with markdown text and perform simple visualizations.

  1. Edite a URL https://SPARKCLUSTER.azurehdinsight.net/jupyter substituindo SPARKCLUSTER com pelo nome do seu cluster do Spark.Edit the URL https://SPARKCLUSTER.azurehdinsight.net/jupyter by replacing SPARKCLUSTER with the name of your Spark cluster. Em seguida, insira a URL editada em um navegador da Web.Then enter the edited URL in a web browser. Em caso de solicitação, insira as credenciais de logon do cluster.If prompted, enter the cluster login credentials for the cluster.

  2. Na página da Web do Jupyter, selecione Novo > PySpark para criar um notebook.From the Jupyter web page, Select New > PySpark to create a notebook.

    Criar um Jupyter Notebook para executar consulta interativa SQL do SparkCreate a Jupyter Notebook to run interactive Spark SQL query

    Um notebook é criado e aberto com o nome Untitled(Untitled.ipynb).A new notebook is created and opened with the name Untitled(Untitled.ipynb).

    Observação

    Usando o kernel PySpark para criar um notebook, a sessão spark é criada automaticamente quando você executar a primeira célula de código.By using the PySpark kernel to create a notebook, the spark session is automatically created for you when you run the first code cell. Você não precisa criar a sessão explicitamente.You do not need to explicitly create the session.

Criar um dataframe usando um arquivo CSVCreate a dataframe from a csv file

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.Applications can create dataframes directly from files or folders on the remote storage such as Azure Storage or Azure Data Lake Storage; from a Hive table; or from other data sources supported by Spark, such as Cosmos DB, Azure SQL DB, DW, and so on. A captura de tela a seguir mostra um instantâneo do arquivo HVAC.csv usado neste tutorial.The following screenshot shows a snapshot of the HVAC.csv file used in this tutorial. O arquivo CSV vem com todos os clusters do Spark no HDInsight.The csv file comes with all HDInsight Spark clusters. Os dados capturam as variações de temperatura de algumas construções.The data captures the temperature variations of some buildings.

Instantâneo de dados para consulta SQL interativa do SparkSnapshot of data for interactive Spark SQL query

  1. Cole o código a seguir em uma célula vazia do Jupyter Notebook e, em seguida, pressione SHIFT + ENTER para executar o código.Paste the following code in an empty cell of the Jupyter notebook, and then press SHIFT + ENTER to run the code. O código importa os tipos obrigatórios necessários para este cenário:The code imports the types required for this scenario:

    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.When running an interactive query in Jupyter, the web browser window or tab caption shows a (Busy) status along with the notebook title. Você também verá um círculo sólido ao lado do texto PySpark no canto superior direito.You also see a solid circle next to the PySpark text in the top-right corner. Após a conclusão do trabalho, isso será alterado para um círculo vazio.After the job is completed, it changes to a hollow circle.

    Status de consulta interativa SQL SparkStatus of interactive Spark SQL query

  2. Execute o seguinte código para criar um dataframe e uma tabela temporária (hvac) executando o código a seguir.Run the following code to create a dataframe and a temporary table (hvac) by running the following code.

    # 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 dataframeRun queries on the dataframe

Depois que a tabela for criada, você poderá executar uma consulta interativa nos dados.Once the table is created, you can run an interactive query on the data.

  1. Execute o seguinte código em uma célula vazia do notebook:Run the following code in an empty cell of the notebook:

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

    A saída tabular a seguir é exibida.The following tabular output is displayed.

    Tabela de saída do resultado da consulta interativa SparkTable output of interactive Spark query result

  2. Você também pode ver os resultados em outras visualizações.You can also see the results in other visualizations as well. Para ver um gráfico de área para a mesma saída, selecione Área e, em seguida, defina outros valores conforme mostrado.To see an area graph for the same output, select Area then set other values as shown.

    Grafo de área de resultado de consulta interativa do SparkArea graph of interactive Spark query result

  3. Na barra de menus do notebook, navegue até Arquivo > Salvar e Ponto de Verificação.From the notebook menu bar, navigate to File > Save and Checkpoint.

  4. Se você estiver começando o próximo tutorial agora, deixe o bloco de anotações aberto.If you're starting the next tutorial now, leave the notebook open. 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.If not, shut down the notebook to release the cluster resources: from the notebook menu bar, navigate to File > Close and Halt.

Limpar recursosClean up resources

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.With HDInsight, your data and Jupyter notebooks are stored in Azure Storage or Azure Data Lake Storage, so you can safely delete a cluster when it isn't in use. Você também é cobrado por um cluster HDInsight, mesmo quando ele não está em uso.You're also charged for an HDInsight cluster, even when it's not in use. 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.Since the charges for the cluster are many times more than the charges for storage, it makes economic sense to delete clusters when they aren't in use. Se você planeja trabalhar no próximo tutorial imediatamente, convém manter o cluster.If you plan to work on the next tutorial immediately, you might want to keep the cluster.

Abra o cluster no portal do Azure e selecione Excluir.Open the cluster in the Azure portal, and select Delete.

Excluir o cluster HDInsightDelete 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.You can also select the resource group name to open the resource group page, and then select Delete resource group. Ao excluir o grupo de recursos, você exclui o cluster Spark do HDInsight e a conta de armazenamento padrão.By deleting the resource group, you delete both the HDInsight Spark cluster, and the default storage account.

Próximas etapasNext steps

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.In this tutorial, you learned how to create a dataframe from a csv file, and how to run interactive Spark SQL queries against an Apache Spark cluster in 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.Advance to the next article to see how the data you registered in Apache Spark can be pulled into a BI analytics tool such as Power BI.