Tutorial: Carga de datos y ejecución de consultas en un clúster de Apache Spark en Azure HDInsightTutorial: Load data and run queries on an Apache Spark cluster in Azure HDInsight

En este tutorial, aprenderá a crear una trama de datos a partir de un archivo CSV y a ejecutar consultas SQL de Spark interactivas en un clúster de Apache Spark en 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. En Spark, una trama de datos es una colección distribuida de datos que se organizan en columnas con nombre.In Spark, a dataframe is a distributed collection of data organized into named columns. Una trama de datos es conceptualmente equivalente a una tabla de una base de datos relacional o a una trama de datos de R/Python.Dataframe is conceptually equivalent to a table in a relational database or a data frame in R/Python.

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Creación de una trama de datos a partir de un archivo csvCreate a dataframe from a csv file
  • Ejecución de consultas en la trama de datosRun queries on the dataframe

Requisitos previosPrerequisites

Un clúster de Apache Spark en HDInsight.An Apache Spark cluster on HDInsight. Vea Creación de un clúster de Apache Spark.See Create an Apache Spark cluster.

Creación de un cuaderno de JupyterCreate a Jupyter notebook

Jupyter Notebook es un entorno de cuaderno interactivo que admite varios lenguajes de programación.Jupyter Notebook is an interactive notebook environment that supports various programming languages. El cuaderno le permite interactuar con los datos, combinar código con el texto de marcado y realizar visualizaciones básicas.The notebook allows you to interact with your data, combine code with markdown text and perform simple visualizations.

  1. Edite la dirección URL https://SPARKCLUSTER.azurehdinsight.net/jupyter; para ello, reemplace SPARKCLUSTER por el nombre del clúster de Spark.Edit the URL https://SPARKCLUSTER.azurehdinsight.net/jupyter by replacing SPARKCLUSTER with the name of your Spark cluster. Después, escriba la dirección URL editada en un explorador web.Then enter the edited URL in a web browser. Cuando se le solicite, escriba las credenciales de inicio de sesión del clúster.If prompted, enter the cluster login credentials for the cluster.

  2. En la página web de Jupyter, seleccione New (Nuevo) > PySpark para crear un cuaderno.From the Jupyter web page, Select New > PySpark to create a notebook.

    Creación de un cuaderno de Jupyter Notebook para ejecutar consultas Spark SQL interactivasCreate a Jupyter Notebook to run interactive Spark SQL query

    Se crea y se abre un nuevo cuaderno con el nombre Untitled(Untitled.ipynb).A new notebook is created and opened with the name Untitled(Untitled.ipynb).

    Nota

    Si se usa el kernel de PySpark para crear un cuaderno, la sesión spark se crea automáticamente al ejecutar la primera celda 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. No es necesario crear la sesión explícitamente.You do not need to explicitly create the session.

Creación de una trama de datos a partir de un archivo csvCreate a dataframe from a csv file

Las aplicaciones pueden crear tramas de datos directamente desde archivos o carpetas del almacenamiento remoto, como Azure Storage o Azure Data Lake Storage; desde una tabla de Hive; o desde otros orígenes de datos compatibles con Spark, como Cosmos DB, Azure SQL DB, DW, etc. La captura de pantalla siguiente muestra una instantánea del archivo HVAC.csv que se usa en este tutorial.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, etc. The following screenshot shows a snapshot of the HVAC.csv file used in this tutorial. El archivo csv incluye todos los clústeres de HDInsight Spark.The csv file comes with all HDInsight Spark clusters. Los datos capturan las variaciones de temperatura de varios edificios.The data captures the temperature variations of some buildings.

Instantánea de los datos de consulta SQL interactiva de SparkSnapshot of data for interactive Spark SQL query

  1. Pegue el código siguiente en una celda vacía del cuaderno de Jupyter y presione MAYÚS + ENTRAR para ejecutar el código.Paste the following code in an empty cell of the Jupyter notebook, and then press SHIFT + ENTER to run the code. El código importa los tipos necesarios para este escenario:The code imports the types required for this scenario:

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

    Al ejecutar una consulta interactiva en Jupyter, la ventana del explorador web o la leyenda de la pestaña muestran el estado (Busy) [(Ocupado)] junto con el título del cuaderno.When running an interactive query in Jupyter, the web browser window or tab caption shows a (Busy) status along with the notebook title. También verá un círculo sólido junto al texto PySpark en la esquina superior derecha.You also see a solid circle next to the PySpark text in the top-right corner. Cuando finaliza el trabajo, cambia a un círculo vacío.After the job is completed, it changes to a hollow circle.

    Estado de consulta Spark SQL interactivaStatus of interactive Spark SQL query

  2. Ejecute el código siguiente para crear una trama de datos y una tabla temporal (hvac).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")
    

Ejecución de consultas en la trama de datosRun queries on the dataframe

Una vez creada la tabla, puede ejecutar una consulta interactiva en los datos.Once the table is created, you can run an interactive query on the data.

  1. Ejecute el siguiente código en una celda vacía del cuaderno: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\"
    

    Se muestra la siguiente salida tabular.The following tabular output is displayed.

    Tabla de salida de resultados de consultas Spark interactivasTable output of interactive Spark query result

  2. También puede ver la salida en otras visualizaciones.You can also see the results in other visualizations as well. Para ver un gráfico de áreas para la misma salida, seleccione Área y establezca otros valores tal como se muestra.To see an area graph for the same output, select Area then set other values as shown.

    Gráfico de área de resultados de consultas Spark interactivasArea graph of interactive Spark query result

  3. En la barra de menús de cuaderno, vaya a Archivo > Save and Checkpoint (Guardar y punto de control).From the notebook menu bar, navigate to File > Save and Checkpoint.

  4. Si ahora va a empezar con el siguiente tutorial, deje el bloc de notas abierto.If you're starting the next tutorial now, leave the notebook open. Si no va a hacerlo, cierre el cuaderno para liberar los recursos de clúster: en la barra de menús del cuaderno, vaya a Archivo > Close and Halt (Cerrar y detener).If not, shut down the notebook to release the cluster resources: from the notebook menu bar, navigate to File > Close and Halt.

Limpieza de recursosClean up resources

Con HDInsight, los datos y los cuadernos de Jupyter se almacenan en Azure Storage o Azure Data Lake Storage, por lo que puede eliminar de forma segura un clúster cuando no esté en 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 is not in use. También se le cobrará por un clúster de HDInsight aunque no se esté usando.You are also charged for an HDInsight cluster, even when it is not in use. Como en muchas ocasiones los cargos por el clúster son mucho más elevados que los cargos por el almacenamiento, desde el punto de vista económico tiene sentido eliminar clústeres cuando no se estén usando.Since the charges for the cluster are many times more than the charges for storage, it makes economic sense to delete clusters when they are not in use. Si tiene previsto pasar inmediatamente al siguiente tutorial, es aconsejable que no elimine el clúster.If you plan to work on the next tutorial immediately, you might want to keep the cluster.

Abra el clúster en Azure Portal y seleccione Eliminar.Open the cluster in the Azure portal, and select Delete.

Eliminar clúster de HDInsightDelete HDInsight cluster

También puede seleccionar el nombre del grupo de recursos para abrir la página del grupo de recursos y, después, hacer clic en Eliminar grupo de recursos.You can also select the resource group name to open the resource group page, and then select Delete resource group. Al eliminar el grupo de recursos, se eliminan tanto el clúster de HDInsight Spark como la cuenta de almacenamiento predeterminada.By deleting the resource group, you delete both the HDInsight Spark cluster, and the default storage account.

Pasos siguientesNext steps

En este tutorial, aprenderá a crear una trama de datos a partir de un archivo CSV y a ejecutar consultas SQL de Spark interactivas en un clúster de Apache Spark en 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. En el siguiente artículo podrá ver cómo extraer en una herramienta de análisis de BI, como Power BI, los datos que registró en Apache Spark.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.