Guía de Spark SQL, DataFrames y Datasets

Spark SQL es un módulo de Spark para el procesamiento de datos estructurados. A diferencia de la API básica de Spark RDD, las interfaces proporcionadas por Spark SQL proporcionan a Spark más información sobre la estructura tanto de los datos como del cálculo que se realiza. Internamente, Spark SQL utiliza esta información extra para realizar optimizaciones adicionales. Hay varias formas de interactuar con Spark SQL, incluyendo SQL y la API del conjunto de datos. Cuando se calcula un resultado, se utiliza el mismo motor de ejecución, independientemente de la API o el lenguaje que se utilice para expresar el cálculo. Esta unificación significa que los desarrolladores pueden alternar fácilmente entre diferentes APIs en función de la que proporcione la forma más natural de expresar una determinada transformación.

Todos los ejemplos de esta página utilizan datos de muestra incluidos en la distribución de Spark y pueden ejecutarse en el shell spark-shell, pyspark o sparkR.

SQL

Un uso de Spark SQL es ejecutar consultas SQL.Spark SQL también puede utilizarse para leer datos de una instalación de Hive existente. Para más información sobre cómo configurar esta función, consulte la sección Tablas de Hive. Cuando se ejecutaSQL desde otro lenguaje de programación, los resultados se devolverán como un Dataset/DataFrame.También puede interactuar con la interfaz SQL utilizando la línea de comandos o a través de JDBC/ODBC.

Datasets y DataFrames

Un Dataset es una colección distribuida de datos.Dataset es una nueva interfaz añadida en Spark 1.6 que proporciona los beneficios de los RDDs (strongtyping, capacidad de utilizar potentes funciones lambda) con los beneficios del motor de ejecución optimizada de Spark SQL. Un Dataset puede construirse a partir de objetos JVM y luego manipularse utilizando transformaciones funcionales (map, flatMap, filter, etc.).La API de Dataset está disponible en Scala yJava. Python no tiene soporte para la API de Dataset. Pero debido a la naturaleza dinámica de Python, muchas de las ventajas de la API Dataset ya están disponibles (por ejemplo, se puede acceder al campo de una fila por su nombre de forma naturalrow.columnName). El caso de R es similar.

Un DataFrame es un Dataset organizado en columnas con nombre. Es conceptualmente equivalente a una tabla en una base de datos relacional o un marco de datos en R/Python, pero con ricas optimizaciones bajo el capó. Los DataFrames pueden construirse a partir de una amplia gama de fuentes como: archivos de datos estructurados, tablas en Hive, bases de datos externas o RDDs existentes.La API de DataFrame está disponible en Scala, Java, Python y R.En Scala y Java, un DataFrame está representado por un Dataset de Rows.En la API de Scala, DataFrame es simplemente un alias de tipo de Dataset.Mientras que, en la API de Java, los usuarios necesitan usar Dataset<Row> para representar un DataFrame.

A lo largo de este documento, a menudo nos referiremos a los Datasets de Scala/Java de Rows como DataFrames.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.