Podcast
Questions and Answers
¿Cuál de las siguientes opciones es la respuesta correcta con respecto a los DataFrames de Spark?
¿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?
¿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?
¿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?
¿Es obligatorio especificar explícitamente el esquema del DataFrame cuando se leen datos de fichero?
Seleccione la respuesta incorrecta: ¿Por qué es aconsejable utilizar DataFrames en Spark en lugar de RDD?
Seleccione la respuesta incorrecta: ¿Por qué es aconsejable utilizar DataFrames en Spark en lugar de RDD?
Tras ejecutar la operación b = df.withColumn(“nueva”, 2*col(“calif”))
:
Tras ejecutar la operación b = df.withColumn(“nueva”, 2*col(“calif”))
:
¿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?
¿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?
Las API estructuradas de DataFrames y Spark SQL...
Las API estructuradas de DataFrames y Spark SQL...
La transformación map de Spark...
La transformación map de Spark...
Para utilizar Spark SQL, es necesario...
Para utilizar Spark SQL, es necesario...
Flashcards
DataFrame de Spark
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)
Esquema (schema)
Es el que define el nombre y el tipo de dato de cada columna en un DataFrame de Spark.
Método toPandas()
Método toPandas()
Convierte el contenido de un DataFrame de Spark a un DataFrame de Pandas (no distribuido) en el driver.
spark.read
spark.read
Signup and view all the flashcards
Formatos de fichero soportados por Spark
Formatos de fichero soportados por Spark
Signup and view all the flashcards
inferSchema = true
inferSchema = true
Signup and view all the flashcards
StructType
StructType
Signup and view all the flashcards
StructField
StructField
Signup and view all the flashcards
Modo Permissive
Modo Permissive
Signup and view all the flashcards
Opción 'header' en CSV
Opción 'header' en CSV
Signup and view all the flashcards
Opción 'delimiter' en CSV
Opción 'delimiter' en CSV
Signup and view all the flashcards
save (escritura)
save (escritura)
Signup and view all the flashcards
Modo de escritura
Modo de escritura
Signup and view all the flashcards
Operaciones de la API estructurada
Operaciones de la API estructurada
Signup and view all the flashcards
Función printSchema()
Función printSchema()
Signup and view all the flashcards
Función col("nombreCol")
Función col("nombreCol")
Signup and view all the flashcards
Función select()
Función select()
Signup and view all the flashcards
Función alias()
Función alias()
Signup and view all the flashcards
Función withColumn()
Función withColumn()
Signup and view all the flashcards
Función drop()
Función drop()
Signup and view all the flashcards
Función withColumnRenamed()
Función withColumnRenamed()
Signup and view all the flashcards
Función when().otherwise()
Función when().otherwise()
Signup and view all the flashcards
Función unionAll()
Función unionAll()
Signup and view all the flashcards
Función except()
Función except()
Signup and view all the flashcards
Función where()
Función where()
Signup and view all the flashcards
Función groupBy()
Función groupBy()
Signup and view all the flashcards
Función agg()
Función agg()
Signup and view all the flashcards
Spark SQL
Spark SQL
Signup and view all the flashcards
createOrReplaceTempView()
createOrReplaceTempView()
Signup and view all the flashcards
spark.sql()
spark.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 comonull
.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 esquemacol("nombreCol")
selecciona una columnaselect
permite seleccionar columnasalias
asigna un nombre a columnawithColumn
devuelve un DF más columna operadadrop
elimina columnawithColumnRenamed
modifica nombre de columnawhen(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 DataFramesexcept
obtiene la diferenciawhere
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ónagg()
- 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()
desparkSession
).
- Interfaz de línea de comandos (
- 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.