4.Spark II: Ingeniería para el Procesado Masivo de Datos

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 de las siguientes opciones es la respuesta correcta con respecto a los DataFrames de Spark?

  • Un RDD es una envoltura de un DataFrame de objetos de tipo Row.
  • Ninguna de las respuestas anteriores es correcta.
  • Un DataFrame es una envoltura de un RDD de objetos de tipo Row. (correct)
  • Un DataFrame es una envoltura de un objeto de tipo Row que contiene RDD.

¿Cuál es la respuesta correcta sobre los DataFrames de Spark?

  • Puesto que representan una estructura de datos más compleja que un RDD, no es posible distribuirlos en memoria.
  • Puesto que son un envoltorio de un RDD, suponen una estructura de datos que sigue estando distribuida en memoria. (correct)
  • Son una estructura de datos no distribuida en memoria, al igual que los DataFrames de Python o los data.frames de R.
  • Son una estructura de datos distribuida en disco.

¿Qué mecanismo ofrece la API estructurada de DataFrames para leer datos?

  • Método ingest de la Spark Session.
  • Método read del Spark Context.
  • Método read de la Spark Session. (correct)
  • No ofrece ningún método, sino que se utiliza la API de RDD para leer datos.

¿Es obligatorio especificar explícitamente el esquema del DataFrame cuando se leen datos de fichero?

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

Seleccione la respuesta incorrecta: ¿Por qué es aconsejable utilizar DataFrames en Spark en lugar de RDD?

<p>Porque los DataFrames ocupan menos en disco. (B)</p> Signup and view all the answers

Tras ejecutar la operación b = df.withColumn(“nueva”, 2*col(“calif”)):

<p>El DataFrame contenido en <code>b</code> tendrá una columna más que <code>df</code>. (A)</p> Signup and view all the answers

¿Cuál es la operación con la que nos quedamos con el subconjunto de filas de un DataFrame que cumplen una determinada condición?

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

Las API estructuradas de DataFrames y Spark SQL...

<p>Se pueden aplicar funciones de la API de DataFrames sobre el resultado de consultas de Spark SQL. (A)</p> Signup and view all the answers

La transformación map de Spark...

<p>Se puede aplicar a un DataFrame porque envuelve un RDD al que se puede acceder mediante el atributo rdd. (D)</p> Signup and view all the answers

Para utilizar Spark SQL, es necesario...

<p>Registrar el DataFrame sobre el que se quieran ejecutar las consultas SQL como tabla o vista, antes de ejecutar cualquier consulta. (C)</p> Signup and view all the answers

Flashcards

DataFrame de Spark

Tabla de datos distribuida en memoria, con filas y columnas nombradas, similar a una tabla de base de datos relacional.

Esquema (schema)

Es el que define el nombre y el tipo de dato de cada columna en un DataFrame de Spark.

Método toPandas()

Convierte el contenido de un DataFrame de Spark a un DataFrame de Pandas (no distribuido) en el driver.

spark.read

Especifica la fuente de datos y opciones para la lectura de datos en un DataFrame.

Signup and view all the flashcards

Formatos de fichero soportados por Spark

CSV, JSON, Parquet, Avro, ORC, JDBC/ODBC o texto plano.

Signup and view all the flashcards

inferSchema = true

Opción para que Spark infiera automáticamente el esquema de un fichero durante la lectura.

Signup and view all the flashcards

StructType

Objeto que define el esquema de un DataFrame, compuesto de StructFields.

Signup and view all the flashcards

StructField

Representa una columna en un StructType, definiendo nombre, tipo y si acepta nulos.

Signup and view all the flashcards

Modo Permissive

Modo de lectura que traduce como null los registros corruptos en un DataFrame.

Signup and view all the flashcards

Opción 'header' en CSV

Indica si la primera línea de un fichero CSV contiene los nombres de las columnas.

Signup and view all the flashcards

Opción 'delimiter' en CSV

Permite indicar el carácter que separa los registros (columnas) en un fichero CSV.

Signup and view all the flashcards

save (escritura)

Especifica el directorio donde se guardarán las partes de un DataFrame al escribirlo en un fichero.

Signup and view all the flashcards

Modo de escritura

Especifica como se guardan los ficheros: append, overwrite, errorIfExists, ignore.

Signup and view all the flashcards

Operaciones de la API estructurada

Operaciones distribuidas sobre columnas que son optimizadas por Catalyst para una ejecución más rápida.

Signup and view all the flashcards

Función printSchema()

Imprime el esquema del DataFrame, mostrando nombres y tipos de las columnas.

Signup and view all the flashcards

Función col("nombreCol")

Selecciona una columna de un DataFrame, devolviendo un objeto Column para transformaciones.

Signup and view all the flashcards

Función select()

Permite seleccionar columnas de un DataFrame y crear nuevas columnas derivadas de otras.

Signup and view all the flashcards

Función alias()

Asigna un nuevo nombre a una columna en un DataFrame.

Signup and view all the flashcards

Función withColumn()

Devuelve un nuevo DataFrame con todas las columnas originales más una nueva añadida al final.

Signup and view all the flashcards

Función drop()

Elimina una columna de un DataFrame.

Signup and view all the flashcards

Función withColumnRenamed()

Renombra una columna existente en un DataFrame.

Signup and view all the flashcards

Función when().otherwise()

Reemplaza valores en una columna según una condición.

Signup and view all the flashcards

Función unionAll()

Une dos DataFrames, añadiendo las filas del segundo al final del primero.

Signup and view all the flashcards

Función except()

Devuelve las filas que están en el primer DataFrame pero no en el segundo.

Signup and view all the flashcards

Función where()

Filtra las filas de un DataFrame según una condición.

Signup and view all the flashcards

Función groupBy()

Agrupa las filas de un DataFrame según los valores de una o más columnas.

Signup and view all the flashcards

Función agg()

Realiza operaciones de agregación (ej., count, max, min) sobre grupos de datos.

Signup and view all the flashcards

Spark SQL

Permite aplicar operaciones escritas como consultas en lenguaje SQL a DataFrames.

Signup and view all the flashcards

createOrReplaceTempView()

Registra un DataFrame como una tabla temporal accesible en Spark SQL.

Signup and view all the flashcards

spark.sql()

Consulta y manipula un dataFrame utilizando SQL.

Signup and view all the flashcards

Study Notes

Spark II: Ingeniería para el Procesado Masivo de Datos

  • Spark nació con la intención de mejorar la eficiencia, rapidez y programación intuitiva en comparación con MapReduce.
  • DataFrames son la estructura de datos clave en la API estructurada de Spark.
  • Spark SQL facilita la manipulación de DataFrames para desarrolladores con experiencia en SQL.

Introducción y Objetivos de Spark

  • Spark es un conjunto de componentes que incluye Spark Core y la API estructurada con DataFrames.
  • Objetivos del tema:
  • Entender la API estructurada de Spark y DataFrames.
  • Identificar las ventajas de usar DataFrames en lugar de RDD.
  • Conocer Spark SQL, sus similitudes y diferencias con la API estructurada.
  • Practicar funciones típicas de procesamiento de DataFrames con ambas APIs.

DataFrames en Spark

  • Un DataFrame es una tabla de datos distribuida en la RAM de los nodos, con filas y columnas nombradas y tipadas.
  • Internamente, un DataFrame es un RDD de objetos de tipo Row.
  • El esquema (schema) define el nombre y tipo de dato de cada columna.
  • Cada DataFrame envuelve un RDD, accesible mediante el atributo rdd.
  • Los DataFrames de Spark están distribuidos en la memoria RAM de los nodos worker.
  • El nombre DataFrame coincide con otras librerías (Pandas en Python, data.frame en R).

API Estructurada de Spark: Lectura y Escritura de DataFrames

  • Spark lee información de fuentes de datos mediante conectores específicos que convierten los datos en DataFrames.
  • Fuentes de datos comunes:
  • HDFS puede leer archivos CSV, JSON, Parquet, ORC y texto plano.
  • Amazon S3 almacena objetos distribuidos.
  • Bases de datos relacionales mediante JDBC u ODBC a través de múltiples workers que operan simulataneamente.
  • Bases de datos no relacionales con conectores específicos.
  • Cola de Kafka para datos en buffer.
  • Streaming a HDFS (creación de ficheros en tiempo real).
  • Spark proporciona los mismos mecanismos para escribir resultados del DataFrame.
  • Para leer datos desde Spark, se usa el atributo spark.read de SparkSession.
  • Opciones de lectura:
  • Formato: CSV, JSON, Parquet, Avro, ORC, JDBC/ODBC, texto plano.
  • Esquema:
  • Algunos formatos (Parquet, ORC o Avro) incluyen el esquema.
  • Spark puede inferirlo con inferSchema = true.
  • Se puede indicar a Spark que no lo infiera, leyendo todo como texto (string).
  • Se puede indicar explícitamente el esquema.
  • Modo de Lectura:
  • permissive (por defecto): traduce registros corruptos como null.
  • dropMalformed: descarta filas con registros incorrectos.
  • failFast lanza un error al encontrar un registro incorrecto.
  • La ruta del fichero es obligatoria; las demás opciones son opcionales.
  • Fichero CSV:
  • La opción header indica si la primera línea corresponde a los nombre de las columnas
  • La opción delimiter indica el carácter separador, este no soporta separadores de más de un carácter

API Estructurada de Spark: Manipulación de DataFrames

  • La API estructurada ofrece operaciones sobre columnas (clase Column), optimizadas por Catalyst.
  • Las manipulaciones devuelven un nuevo DataFrame sin modificar el original (inmutables).
  • Transformaciones comunes:
  • printSchema imprime el esquema
  • col("nombreCol") selecciona una columna
  • select permite seleccionar columnas
  • alias asigna un nombre a columna
  • withColumn devuelve un DF más columna operada
  • drop elimina columna
  • withColumnRenamed modifica nombre de columna
  • when(condición, valorReemplazo1).otherwise(valorReemplazo2) reemplaza valores según condición.
  • Transformaciones matemáticas y estadísticas:
  • Columna de números aleatorios: unif, norm
  • DataFrame con estadísticas descriptivas (describe)
  • Seno, coseno, raíz cuadrada

API Estructurada de Spark: Combinaciones y Filtrado de DataFrames

  • Otras funciones relacionadas con la combinación y filtrado de DataFrames:
  • unionALL une los DataFrames
  • except obtiene la diferencia
  • where filtra la columna según expresión

API Estructurada de Spark: Operaciones de RDD Aplicadas a DataFrames

  • Las operaciones de RDD suelen estar disponibles también para DataFrames.
  • Acceder al RDD mediante df.rdd
  • Se pueden realizar transformaciones como sample, sort, distinct, groupBy y acciones como count, take, first, etc.

API Estructurada de Spark: Agrupamiento y Agregación

  • El método groupBy devuelve un RelationalGroupedDataset sobre el que se pueden aplicar operaciones de agregación.
    • Equivale a GROUP BY de SQL
  • Operaciones comunes: count() efectúa un conteo de los elementos de cada grupo, o la función agg()
    • Esta realiza las agregaciones para cada grupo y columnas seleccionadas

Ejemplo de uso de API estructurada

  • Se usa el motor Catalyst.
  • Es más sencillo hacer manipulaciones.
  • Se usa menos pairRDD por la estructura.

Spark SQL

  • Permite aplicar consultas en lenguaje SQL a DataFrames registrados como tablas.
  • Se integra con la API de DataFrames.
  • Existe un motor de ejecución unificado.
  • Spark SQL funciona como un motor de procesado de consultas en batch (OLTP).
  • Hay dos opciones para ejecutar consultas SQL en Spark:
    • Interfaz de línea de comandos (spark-sql).
    • API de Spark SQL (método sql() de sparkSession).
  • Es necesario registrar un DataFrame como tabla de Hive/vista temporal (createOrReplaceTempView).
  • La API SQL es interoperable con la API estructurada.

Tablas en Spark SQL

  • El elemento principal es la tabla.
  • Equivalente a los DataFrames en la API estructurada.
  • Pertenecen a una base de datos (database, default por defecto).
  • Tipos de tablas:
    • Gestionadas: Spark almacena los datos.
    • No Gestionadas: Spark no gestiona los datos
    • Externas: Spark gestiona metadatos pero no los datos
  • Para eliminar una tabla, se utiliza la consulta DROP, si es gestionada se eliminan datos y metadatos, si no datos originales.
  • Las vistas especifican la transformación que se harán sobre los almacenados

Diferencias entre vistas

  • Estándar: están disponibles de sesión en sesión
  • Temporales: solo están disponibles durante la sesión actual
  • Globales: son accesibles desde cualquier lugar y se eliminan al final de sesión
  • Es posible reemplazar una vista con otra utilizando el método CREATE OR REPLACE TEMP VIEW

Studying That Suits You

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

Quiz Team

More Like This

Use Quizgecko on...
Browser
Browser