4 Spark DataFrames y la API Estructurada II SUM

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

¿Cuál es la estructura de datos clave en la API estructurada de Spark?

  • DataFrame (correct)
  • Spark SQL
  • Spark Core
  • RDD (Resilient Distributed Dataset)

¿Cuál de las siguientes opciones NO es una ventaja de usar DataFrames sobre RDDs en Spark?

  • Mayor facilidad de uso.
  • Optimizaciones a través Catalyst.
  • Control preciso sobre la estructura de datos. (correct)
  • Mayor nivel de abstracción.

¿Cuál de las siguientes operaciones puede realizar Spark directamente sobre un DataFrame para guardarlo en formato CSV, sobrescribiendo el archivo si existe y usando tabuladores como separador?

  • `spark.write.csv("path/to/hdfs/directory").mode("overwrite").sep("\t").header(True)`
  • `df.save("path/to/hdfs/directory", format="csv", mode="overwrite", sep="\t", header=True)`
  • `df.write.csv("path/to/hdfs/directory", mode="overwrite", sep="\t", header=True)`
  • `df.write.format("csv").mode("overwrite").option("sep", "\t").option("header", "true").save("path/to/hdfs/directory")` (correct)

Si tienes un DataFrame llamado df, ¿cómo seleccionarías la columna 'nombre' y mostrarías los 5 primeros registros utlizando pyspark?

<p><code>df.select('nombre').show(5)</code> (B)</p>
Signup and view all the answers

¿Qué hace la función withColumn en Spark DataFrames?

<p>Devuelve un nuevo DataFrame con una columna añadida o reemplazada. (B)</p>
Signup and view all the answers

En Spark SQL, ¿qué diferencia una vista de una tabla?

<p>Las vistas son consultas almacenadas que se ejecutan sobre las tablas base, y no guardan datos. (C)</p>
Signup and view all the answers

¿Cuál de las siguientes opciones es una forma correcta de registrar un DataFrame llamado mi_df como una tabla temporal en Spark SQL para poder consultarlo con SQL?

<p><code>mi_df.createOrReplaceTempView(&quot;mi_tabla&quot;)</code> (D)</p>
Signup and view all the answers

¿Qué implicación tiene usar la opción inferSchema = true al leer un archivo CSV en Spark?

<p>Spark intentará inferir el esquema de los datos leyendo una muestra del archivo. (C)</p>
Signup and view all the answers

¿Cuál es el propósito principal de la función groupBy en Spark DataFrames?

<p>Agrupar los datos basándose en los valores de una o más columnas para realizar agregaciones. (B)</p>
Signup and view all the answers

Si se tiene un DataFrame df y se desea crear una nueva columna llamada total, que sea la suma de las columnas col1 y col2, ¿cuál es la forma correcta de hacerlo usando la API de DataFrames en pyspark?

<p><code>df.withColumn('total', F.col('col1') + F.col('col2'))</code> (D)</p>
Signup and view all the answers

En Spark SQL, ¿qué tipo de tabla elimina tanto los datos como los metadatos al ser eliminada?

<p>Tabla gestionada (managed table) (C)</p>
Signup and view all the answers

Spark SQL está optimizado para:

<p>Procesamiento de consultas en batch (OLTP). (D)</p>
Signup and view all the answers

¿Qué función se utiliza para renombrar una columna en un DataFrame en Spark?

<p><code>withColumnRenamed</code> (D)</p>
Signup and view all the answers

¿Cuál de las siguientes fuentes de datos NO es directamente soportada por Spark para lectura a través de conectores?

<p>Archivos de Microsoft Excel (XLSX). (B)</p>
Signup and view all the answers

Para leer datos desde Spark, ¿qué atributo de SparkSession se utiliza?

<p><code>spark.read</code> (B)</p>
Signup and view all the answers

Al leer un DataFrame, ¿qué opción de modo de lectura descarta las filas que contienen alguno de sus registros con un formato incorrecto?

<p>dropMalformed (D)</p>
Signup and view all the answers

¿Cuál es la función del método printSchema() en un DataFrame de Spark?

<p>Muestra el esquema del DataFrame, incluyendo nombres y tipos de datos de las columnas. (A)</p>
Signup and view all the answers

¿Qué operación en Spark SQL permite definir grupos para después calcular un resultado agregado (como la suma o la media) para cada grupo?

<p>GROUP BY (B)</p>
Signup and view all the answers

¿Qué es Catalyst en el contexto de Spark?

<p>Un optimizador de consultas. (C)</p>
Signup and view all the answers

¿Qué opción de escritura en DataFrames de Spark permite añadir datos a un fichero existente?

<p>Append (D)</p>
Signup and view all the answers

¿Qué ocurrirá si intentas ejecutar el método toPandas en un DataFrame de Spark que contiene más datos de los que caben en la memoria RAM del nodo driver?

<p>Se produce una excepción <code>OutOfMemoryError</code>. (B)</p>
Signup and view all the answers

¿Cuál de las siguientes afirmaciones es verdadera sobre la interoperabilidad entre Spark SQL y la API estructurada de DataFrames?

<p>Es posible combinar consultas SQL y operaciones de la API estructurada en el mismo flujo de trabajo. (B)</p>
Signup and view all the answers

¿Cuál de los siguientes NO es un tipo de vista en Spark SQL?

<p>Vista Materializada. (B)</p>
Signup and view all the answers

¿Qué tipo de datos devuelve la función col() en Spark cuando se selecciona una columna de un DataFrame?

<p>Column (A)</p>
Signup and view all the answers

Si deseas leer un archivo Parquet en Spark, ¿qué formato debes especificar en el método spark.read.format()?

<p>&quot;parquet&quot; (A)</p>
Signup and view all the answers

Cuando se usa la función where() en un DataFrame de Spark, ¿qué tipo de expresión se debe pasar como argumento?

<p>Un objeto Column que representa una condición. (D)</p>
Signup and view all the answers

¿Qué función de Spark se usa para realizar una unión (join) entre dos DataFrames?

<p><code>join()</code> (B)</p>
Signup and view all the answers

¿Qué función de Spark se usa para quitar filas duplicadas de un DataFrame?

<p><code>dropDuplicates()</code> (A)</p>
Signup and view all the answers

Cuál es la diferencia entre las opciones 'errorIfExists' y 'ignore' al escribir un DataFrame en Spark?

<p><code>'errorIfExists'</code> lanza un error si el archivo ya existe, mientras que <code>'ignore'</code> no escribe nada si el archivo existe. (D)</p>
Signup and view all the answers

¿Cuál es la finalidad de la función udf en PySpark?

<p>Definir una función definida por el usuario para ser aplicada en transformaciones de DataFrames. (B)</p>
Signup and view all the answers

¿Qué formato de archivo almacena el esquema junto con los datos, facilitando la inferencia del esquema en Spark?

<p>Parquet (D)</p>
Signup and view all the answers

Cuál es la sintaxis correcta en Spark SQL para crear una vista temporal global llamada global_temp_view a partir de una tabla existente llamada my_table?

<p><code>CREATE OR REPLACE GLOBAL TEMP VIEW global_temp_view AS SELECT * FROM my_table</code> (A)</p>
Signup and view all the answers

¿Cuál es el propósito de la función explode en Spark SQL?

<p>Transformar una columna de tipo array o map en filas separadas. (C)</p>
Signup and view all the answers

¿Qué función se utiliza en Spark DataFrames para aplicar una función a cada elemento de una columna y devolver una nueva columna con los resultados, ejecutándose de manera distribuida?

<p><code>withColumn()</code> con una UDF. (C)</p>
Signup and view all the answers

Flashcards

¿Qué es un DataFrame de Spark?

Es una tabla de datos distribuida en la RAM, formada por filas y columnas con nombre y tipo.

¿Qué define el schema de un DataFrame?

El esquema define el nombre y el tipo de dato de cada columna en un DataFrame.

¿Qué permite la API estructurada de Spark?

La lectura y escritura de DataFrames con diversos formatos de archivo (CSV, JSON, Parquet, etc.) y fuentes (HDFS, Amazon S3, bases de datos).

¿Qué hace la opción inferSchema?

Con la opción inferSchema en true, Spark intenta adivinar el tipo de datos al leer un fichero.

Signup and view all the flashcards

¿Qué indica la opción header en CSV?

Con la opción header, Spark usa la primera línea del fichero CSV como nombres de columnas.

Signup and view all the flashcards

¿Cómo se escribe un DataFrame a un fichero?

Usar el método format() para especificar el formato y mode() para el modo de escritura (append, overwrite, etc.).

Signup and view all the flashcards

¿Qué permite el encadenamiento de transformaciones?

Encadenar transformaciones para crear un flujo de procesamiento de datos.

Signup and view all the flashcards

¿Qué hace col("nombreCol")?

Selecciona una columna del DataFrame, permitiendo realizar transformaciones sobre ella.

Signup and view all the flashcards

¿Qué hace withColumn?

Añade una nueva columna al final del DataFrame basada en operaciones sobre columnas existentes.

Signup and view all the flashcards

¿Qué hace withColumnRenamed?

Cambia el nombre de una columna existente en el DataFrame.

Signup and view all the flashcards

¿Qué hace drop?

Elimina una columna especificada del DataFrame.

Signup and view all the flashcards

¿Cómo se filtran y agrupan DataFrames?

Usar where() para filtrar filas basado en una condición y groupBy() para agrupar filas según los valores de una o más columnas.

Signup and view all the flashcards

¿Cómo acceder al RDD envuelto por un DataFrame?

Se puede acceder mediante el atributo rdd.

Signup and view all the flashcards

¿Para qué tipo de consultas está pensado Spark SQL?

Motor de procesado de consultas en batch (OLTP), no para interactivas (OLAP).

Signup and view all the flashcards

¿Cómo crear tablas temporales con Spark SQL?

Para crear tablas en Hive, se pueden usar métodos como createOrReplaceTempView.

Signup and view all the flashcards

¿Qué permite la consulta CREATE EXTERNAL TABLE?

La consulta CREATE EXTERNAL TABLE permite crear tablas no gestionadas por Spark.

Signup and view all the flashcards

¿Qué son las vistas en Spark SQL?

Definen un conjunto de operaciones sobre una tabla existente, sin guardar los datos en una nueva localización.

Signup and view all the flashcards

¿Cómo se crean las vistas?

Se crean con CREATE VIEW o CREATE TEMP VIEW para sesiones actuales.

Signup and view all the flashcards

Study Notes

Introducción a Spark II

  • Spark es un framework de programación distribuida diseñado para mejorar la eficiencia, rapidez y programación intuitiva en el procesamiento de grandes cantidades de datos en clústeres, superando al paradigma MapReduce.
  • Spark incluye componentes como Spark Core y RDD, y ahora destaca la API estructurada con DataFrames, que facilitan la creación y manipulación de datos.
  • Los objetivos principales son comprender la API estructurada de Spark y el DataFrame, identificar ventajas de usar DataFrames en lugar de RDD, conocer Spark SQL y sus similitudes/diferencias con la API estructurada, y practicar funciones de procesamiento típicas con ambas APIs.

DataFrames en Spark

  • Los DataFrames en Spark permiten manejar RDD como tablas de datos estructuradas en filas y columnas, aportan abstracción y facilidad de uso.
  • Un DataFrame es una tabla de datos distribuida en la RAM de los nodos, organizada en filas y columnas con nombre y tipo, semejante a bases de datos relacionales.
  • Internamente, un DataFrame es un RDD de objetos de tipo Row, donde cada Row representa una fila de la tabla con componentes (columnas) que tienen nombre y tipo predefinido por el esquema.
  • Es necesario recordar que los DataFrames se distribuyen en la memoria RAM de los nodos worker.

API Estructurada de Spark: Lectura y Escritura de DataFrames

  • Spark puede leer información de diversas fuentes de datos mediante conectores específicos que indican cómo obtener datos y convertirlos en DataFrames.
  • Las fuentes de datos comunes incluyen HDFS (CSV, JSON, Parquet, ORC, texto plano), Amazon S3, bases de datos relacionales (JDBC/ODBC), bases de datos no relacionales (Cassandra, MongoDB) y Kafka.
  • Para leer datos en Spark, se usa el atributo spark.read de la SparkSession y se especifican opciones según el tipo de fichero; es obligatoria la ruta del fichero, el resto son opcionales.
  • En cuanto al esquema, algunos ficheros (Parquet, ORC, Avro) lo almacenan junto a los datos. Los que no, tienen las opciones de inferir (true), que no infiera (false) y lea como string, o especificarlo explícitamente.
  • Los ficheros CSV pueden ser problemáticos por la división en columnas, que depende de separadores complejos y a veces confusos. Spark no soporta separadores de más de un carácter.

Escritura de DataFrames

  • La operación de escritura es análoga pero usando write de los DataFrames y especificando:
    • Formato con methodo format(), igual que para leer.
    • Modo de escritura: append, overwrite, errorIfExists, ignore.
    • Opciones específicas del formato.

API Estructurada de Spark: Manipulación de DataFrames

  • Las operaciones de la API estructurada actúan sobre columnas (clase Column), optimizadas por Catalyst para una ejecución más rápida.
  • Las manipulaciones devuelven un nuevo DataFrame sin alterar el original (los RDD son inmutables). Se pueden encadenar transformaciones.
  • "col(nombreCol)" sirve para seleccionar una columna y devuelve un objeto Column donde podemos realizar transformaciones.
  • "select" permite seleccionar columnas de diferentes formas.
  • "alias" asigna un nombre a la columna sobre la que se aplica.
  • “withColumn” devuelve el nuevo DF con todas las columnas del original más una nueva columna añadida al final, como resultado de una operación entre columnas existentes que devuelve como resultado un objeto Column.
  • "drop" elimina una columna.
  • "withColumnRenamed" renombra una columna.
  • "when(condición, valorReemplazo1).otherwise(valorReemplazo2)" sirve para reemplazar valores de una columna con una condición.
  • Existe una serie de funciones matemáticas y estadísticas disponibles para su aplicación en DataFrames.

Combinaciones y filtrado de DataFrames

  • Unión de DataFrames: df1.unionAll(df2).
  • Diferencia de DataFrames: df1.except(df2).
  • Las operaciones que podíamos usar sobre RDD suelen estar disponibles también para los DataFrames.

Operaciones de Agrupamiento y Agregación

  • El método groupBy("nombreCol1”, “nombreCol2”, …) sobre un DataFrame devuelve una estructura de datos llamada RelationalGroupedDataset, que no es un DataFrame y sobre la que apenas se pueden aplicar operaciones.
  • Se suelen aplicar operaciones como count(), que efectúa un conteo del número de elementos de cada grupo, o la función agg(), que es la más habitual y realiza, para cada grupo, las agregaciones que le indiquemos sobre las columnas seleccionadas.

Spark SQL

  • Spark SQL ofrece una alternativa poderosa: operaciones escritas en SQL sobre DataFrames registrados como tablas, integrándose con la API de DataFrames y compilándose en un plan de ejecución unificado.
  • Spark SQL está diseñado para el procesamiento de consultas en batch (OLTP), similar a Hive.
  • Opciones para ejecutar consultas SQL en Spark:
    • Interfaz de línea de comandos: mediante './bin/spark-sql'.
    • API de Spark SQL: sql() en SparkSession para consultas a tablas Hive, devuelve DataFrames.
  • Para el caso de que se quiera registrar un DataFrame como una tabla de Hive, existe el método createOrReplaceTempView, que la registra solo durante esta sesión.
  • Además, la API SQL es totalmente interoperable con la API estructurada, de forma que se puede crear un DataFrame, manipularlo primero con SQL y después con la API estructurada.
  • Servidor JDBC/ODBC: usando aplicaciones BI (como Tableau).

Tablas en SparkSQL

  • El elemento de trabajo son las tablas, equivalente a los DataFrames. Toda tabla pertenece a una base de datos, si no se especifica, usa la de defecto (default). Las tablas siempre contienen datos y no existe el concepto de tabla temporal. En su lugar, existen vistas, que no contienen datos.
  • Al crear tablas, indicar si serán gestionadas por Spark (managed table) o no (unmanaged table). Una tabla tiene datos y metadatos que la describen.
    • Tablas no gestionadas: tabla desde ficheros en disco, Spark no gestiona los datos (ya existían).
    • Tablas gestionadas: al guardar un DataFrame como tabla (ej: saveAsTable), Spark la gestiona, almacenando los datos nuevos.
    • Tablas externas: compatibilidad con Hive, metadatos gestionados por Spark, pero no los datos (CREATE EXTERNAL TABLE).
  • Si la tabla está gestionada por Spark, tanto los datos como los metadatos, se eliminarán al eliminar la tabla. En caso contrario, se eliminan los metadatos y los datos originales permanecerán intactos).

Vistas en Spark SQL

  • Una vista especifica un conjunto de transformaciones sobre una tabla para conseguir unos resultados. Las vistas se muestran como tablas, pero no guardan los datos en una nueva localización.
  • Tipos de vistas:
    • Estándar: disponible de sesión en sesión.
    • Temporales: solo disponible en la sesión actual.
    • Globales: accesible desde cualquier punto de la aplicación Spark, pero se elimina al final de la sesión.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

SparkSQL and DataFrames
10 questions

SparkSQL and DataFrames

PreferableHyena2189 avatar
PreferableHyena2189
Use Quizgecko on...
Browser
Browser