Podcast
Questions and Answers
¿Cuál es el propósito principal de Spark MLlib?
¿Cuál es el propósito principal de Spark MLlib?
- Gestionar la infraestructura de _hardware_ para el procesamiento de datos.
- Implementar modelos de _machine learning_ de manera distribuida. (correct)
- Optimizar la seguridad de los datos en entornos distribuidos.
- Proporcionar herramientas para la visualización de datos en tiempo real.
¿Qué tipo de datos requiere la columna 'target' en problemas de aprendizaje supervisado en Spark ML?
¿Qué tipo de datos requiere la columna 'target' en problemas de aprendizaje supervisado en Spark ML?
- Número real (_double_). (correct)
- Booleano (_boolean_).
- Número entero (_integer_).
- Cadena de texto (_string_).
¿Cuál es la función de los 'pipelines' en Spark ML?
¿Cuál es la función de los 'pipelines' en Spark ML?
- Optimizar el uso de la memoria caché en el procesamiento de datos.
- Monitorear el rendimiento del _hardware_ del _cluster_.
- Gestionar la concurrencia en el acceso a los datos.
- Encapsular una secuencia de transformaciones y algoritmos en un solo objeto. (correct)
En Spark ML, ¿qué diferencia a un 'transformer' de un 'estimator'?
En Spark ML, ¿qué diferencia a un 'transformer' de un 'estimator'?
¿Qué funcionalidad ofrece Spark Structured Streaming en comparación con el procesamiento batch tradicional?
¿Qué funcionalidad ofrece Spark Structured Streaming en comparación con el procesamiento batch tradicional?
¿Cuál es el propósito del StringIndexer
en Spark ML?
¿Cuál es el propósito del StringIndexer
en Spark ML?
¿Cómo se asegura Spark ML de que los nuevos datos para predicción pasen por el mismo preprocesamiento que los datos de entrenamiento?
¿Cómo se asegura Spark ML de que los nuevos datos para predicción pasen por el mismo preprocesamiento que los datos de entrenamiento?
¿Qué API de Spark ML se considera la actual y recomendada para usar con DataFrames?
¿Qué API de Spark ML se considera la actual y recomendada para usar con DataFrames?
En Spark Structured Streaming, ¿qué se debe hacer para asegurar que se detecte el esquema de los ficheros de entrada?
En Spark Structured Streaming, ¿qué se debe hacer para asegurar que se detecte el esquema de los ficheros de entrada?
¿Qué implica el modo de salida 'complete' en Spark Structured Streaming?
¿Qué implica el modo de salida 'complete' en Spark Structured Streaming?
¿Cuál es la función del VectorAssembler
en Spark ML?
¿Cuál es la función del VectorAssembler
en Spark ML?
¿En qué se diferencia el procesamiento online del procesamiento batch según el contenido?
¿En qué se diferencia el procesamiento online del procesamiento batch según el contenido?
Según el contenido, ¿cuál es la mejor manera de desplegar modelos de machine learning entrenados con Spark en producción?
Según el contenido, ¿cuál es la mejor manera de desplegar modelos de machine learning entrenados con Spark en producción?
¿Qué restricción impone Spark para los algoritmos de recomendación?
¿Qué restricción impone Spark para los algoritmos de recomendación?
Para los algoritmos que no soportan variables categóricas, ¿qué transformación es necesaria?
Para los algoritmos que no soportan variables categóricas, ¿qué transformación es necesaria?
¿Qué ocurre cuando se llama al método fit()
de un 'pipeline' en Spark ML?
¿Qué ocurre cuando se llama al método fit()
de un 'pipeline' en Spark ML?
¿Qué tipos de fuentes de datos puede usar Spark Structured Streaming para la entrada?
¿Qué tipos de fuentes de datos puede usar Spark Structured Streaming para la entrada?
Si se tiene un 'pipeline' ya entrenado, ¿qué método se debe utilizar para realizar predicciones sobre nuevos datos?
Si se tiene un 'pipeline' ya entrenado, ¿qué método se debe utilizar para realizar predicciones sobre nuevos datos?
¿Qué significa que un 'pipeline' es también un 'estimator'?
¿Qué significa que un 'pipeline' es también un 'estimator'?
Según lo revisado, ¿Spark fue concebido para explotación online de modelos entrenados?
Según lo revisado, ¿Spark fue concebido para explotación online de modelos entrenados?
¿Cuál de las siguientes opciones no es una posibilidad que ofrezca Spark para el preprocesamiento de los datos?
¿Cuál de las siguientes opciones no es una posibilidad que ofrezca Spark para el preprocesamiento de los datos?
¿Cuál es el proceso para usar Structured Streaming
con Spark?
¿Cuál es el proceso para usar Structured Streaming
con Spark?
¿Qué interfaz tiene un único método transform(df: dataframe)
?
¿Qué interfaz tiene un único método transform(df: dataframe)
?
Según el texto, ¿si tenemos cinco clases, como se tienen que codificar éstas?
Según el texto, ¿si tenemos cinco clases, como se tienen que codificar éstas?
Flashcards
¿Qué es Spark MLlib?
¿Qué es Spark MLlib?
Módulo de Spark para limpieza de datos, ingeniería de variables, aprendizaje y ajuste de modelos.
¿Qué son las pipelines en Spark?
¿Qué son las pipelines en Spark?
Proceso que encapsula etapas de preprocesamiento y modelado para asegurar consistencia en datos nuevos.
¿Qué es el paquete org.apache.spark.mllib?
¿Qué es el paquete org.apache.spark.mllib?
API antigua de Spark MLlib basada en RDDs y la estructura LabeledPoint. Se considera obsoleta.
¿Qué es el paquete org.apache.spark.ml?
¿Qué es el paquete org.apache.spark.ml?
Signup and view all the flashcards
¿Qué transformación permite escribir código SQL en Spark ML?
¿Qué transformación permite escribir código SQL en Spark ML?
Signup and view all the flashcards
¿Qué es un Transformer en Spark ML?
¿Qué es un Transformer en Spark ML?
Signup and view all the flashcards
¿Qué es VectorAssembler?
¿Qué es VectorAssembler?
Signup and view all the flashcards
¿Qué es un modelo entrenado en Spark ML?
¿Qué es un modelo entrenado en Spark ML?
Signup and view all the flashcards
¿Qué es un Estimator en Spark ML?
¿Qué es un Estimator en Spark ML?
Signup and view all the flashcards
¿Qué es StringIndexer?
¿Qué es StringIndexer?
Signup and view all the flashcards
¿Qué es OneHotEncoderEstimator?
¿Qué es OneHotEncoderEstimator?
Signup and view all the flashcards
¿Qué es una Pipeline en SparkML?
¿Qué es una Pipeline en SparkML?
Signup and view all the flashcards
¿Qué es Spark Structured Streaming?
¿Qué es Spark Structured Streaming?
Signup and view all the flashcards
¿Qué hay que activar explícitamente en Structured Streaming?
¿Qué hay que activar explícitamente en Structured Streaming?
Signup and view all the flashcards
¿Cuáles son los modos de salida en Structured Streaming?
¿Cuáles son los modos de salida en Structured Streaming?
Signup and view all the flashcards
Study Notes
Introducción a Spark III
- Profundiza en los módulos de Spark que ofrecen funcionalidades de nivel superior.
- Spark MLlib y sus métodos básicos se exploran para el ajuste de modelos.
- Se examina Spark Streaming para el procesamiento de datos en tiempo real.
- Se presenta Apache Hive, herramienta para realizar consultas SQL sobre datos distribuidos.
- Apache Hive utiliza MapReduce, Spark o Tez como motor de ejecución.
- Los objetivos del tema son introducir a los alumnos en los módulos de alto nivel de Spark, presentar las capacidades de Spark MLlib y mostrar las ideas básicas de Spark Structured Streaming.
Spark MLlib
- Es el módulo de Spark para:
- Limpieza de datos.
- Ingeniería de variables.
- Aprendizaje de modelos.
- Ajuste y evaluación de modelos.
- No ofrece métodos para el despliegue en producción de modelos, que suelen ser implementados como microservicios.
- MLlib implementa modelos de manera distribuida en Spark, capaces de aprender sobre grandes datasets almacenados de forma distribuida.
- MLlib se utiliza para preprocesar variables en datasets masivos, limpiarlos, normalizarlos y filtrarlos antes de pasarlos al driver para su almacenamiento local.
- Para el aprendizaje automático no distribuido, se pueden utilizar bibliotecas como Scikit-learn de Python o paquetes de R como caret o e1071.
- Spark proporciona herramientas para cada etapa del ciclo de ajuste de un modelo, incluyendo una herramienta adicional:
pipelines
que encapsula todas las etapas en un objeto indivisible y asegura que los nuevos datos pasen por el mismo preprocesamiento que el dataset original. - El preprocesamiento incluye operaciones típicas de data science y procesamiento específico de Spark para adaptar los datos al formato esperado por los algoritmos de la API de Spark ML.
Despliegue de modelos en producción con Spark
- Spark no fue diseñado para la explotación online de modelos entrenados.
- La fortaleza de Spark está en entrenar modelos en modo batch con grandes conjuntos de datos.
- Una opción es entrenar con datos offline almacenados en HDFS y predecir en modo batch otro conjunto de datos nuevos.
- Este enfoque es viable cuando se conocen los datos que hay que predecir en el momento de entrenar.
- Las predicciones se almacenan en HDFS o en bases de datos indexadas para servirlas rápidamente desde un microservicio.
- Alternativamente, se puede predecir en batch cuando se tengan suficientes datos nuevos.
- Se puede entrenar, guardar el modelo y usarlo desde Spark para predicciones una a una, aunque esto implica sobrecarga al lanzar un job por cada ejemplo.
- Otra opción es entrenar y exportar el modelo en un formato de intercambio, como PMML, para ser utilizado con otras herramientas no distribuidas.
- También se puede entrenar en modo online usando Structured Streaming para recoger datos, aunque suele requerir reentrenar desde cero.
Estimadores y transformadores
- En la API de Spark (Java/Scala/Python), se distinguen:
- Paquete
org.apache.spark.mllib
(en Python:pyspark.mllib
): API antigua basada en RDD y en desuso. - Paquete
org.apache.spark.ml
(en Python:pyspark.ml
): API actual basada en DataFrames, que debe utilizarse siempre que sea posible.
- Paquete
- El contenido del módulo
spark.mllib
ha sido migrado al módulospark.ml
excepto algunas clases en evaluación y recomendación. - Para la creación de variables y el preprocesamiento, se utiliza la API de Spark SQL o las transformaciones de Spark ML que permiten incluir código SQL arbitrario en un pipeline.
- Spark ML ofrece transformaciones relacionadas con el preprocesamiento estadístico de datos (normalización, estandarización, codificación one-hot, etc.).
- Spark requiere formatos específicos de entrada para los algoritmos de Machine Learning para Spark.
Tipos de datos requeridos para algoritmos
- Clasificación: columna target de tipo real (double) y clases codificadas como números reales empezando en 0.0.
- Regresión: columna target de tipo real (double) con cualquier número real.
- Recomendación (solo filtrado colaborativo): DataFrame con columnas de identificadores de usuario, ítem (enteros) y rating (número real).
- Los valores de las variables deben presentarse en una columna de tipo vector.
- Spark ofrece posibilidades para preprocesamiento:
- Extracción.
- Transformación.
- Selección.
- Locality sensitive hashing (LSH).
Transformadores en Spark ML
- Un transformer es un objeto que recibe un DataFrame de Spark y nombres de columna, y los transforma añadiendo una nueva columna a la derecha.
- Los transformers no necesitan aprender parámetros del DataFrame de entrada.
VectorAssembler
: concatena columnas en una sola de tipo vector, necesaria para la columna features.- Cualquier modelo entrenado: es un objeto model de la subclase ajustada y un transformer capaz de transformar un DF de ejemplos con el mismo formato que el usado para entrenar, añadiendo las predicciones en una nueva columna.
Estimadores en Spark ML
- Un estimator es un objeto de Spark capaz de realizar transformaciones que requieren ajustar ciertos parámetros sobre los datos.
- Requieren una pasada previa sobre los datos.
- Devuelven un objeto de tipo model (el modelo entrenado), que es un transformer.
- Spark llama modelo a cualquier cosa que requiera un fit previo.
StringIndexer
:- Es un estimador para preprocesar variables categóricas.
- Convierte una columna en números reales (double) que representan categorías.
- Añade metadata al DataFrame resultante indicando que esa columna es categórica.
- Los algoritmos que soportan variables categóricas requieren pasar las variables indexadas.
- Los algoritmos que no soportan variables categóricas requieren
OneHotEncoder
.
OneHotEncoderEstimator
:- Recibe un conjunto de columnas y convierte cada una a un conjunto de variables dummy con codificación one-hot.
- Produce una columna de tipo vector.
- Spark asume que los valores provienen de un
StringIndexer
.
- Todos los modelos de predicción heredan de
Estimator
y aprenden con el métodofit(df)
.
Pipelines en Spark ML
- Un
pipeline
es una secuencia estimator o transformers - Facilitan el manejo de los pasos de preprocesamiento y entrenamiento en Machine Learning:
- Dividir en palabras.
- Procesar palabras.
- Preparar el formato.
- Entrenar el modelo.
- Un
pipeline
es unestimator
.- Su método
fit(df)
recorre cada etapa, llamando atransform()
si es un transformador o afit(df)
y luegotransform(df)
si es un estimador.
- Su método
- Es habitual que la última etapa del pipeline sea un algoritmo de Machine Learning.
- No se puede añadir un mismo objeto a dos pipelines diferentes.
- Llamar a
fit
sobre el objetopipeline
devuelve un objetoPipelineModel
, que es un transformador.
Spark Structured Streaming
- Es el módulo de Spark que ha absorbido al obsoleto Spark Streaming, utilizando streaming DataFrames en lugar de DStreams.
- Permite disminuir la latencia respecto a un proceso batch al realizar el cálculo incremental automáticamente.
- El stream processing incorpora continuamente nuevos datos que permiten actualizar un resultado en tiempo real.
- Structured Streaming,API es idéntica a los DataFrames
- La única acción disponible es
start()
, que inicia el cálculo y lo ejecuta indefinidamente.
Fuentes de datos de entradas y salidas permitidas
- Permite leer datos desde Kafka, HDFS, Amazon S3 o un socket.
- La lectura se realiza con el método
readStream
aplicado al objetoSparkSession
. - Es necesario activar explícitamente la opción de inferencia de esquema o especificar el esquema.
- La salida puede escribirse en Kafka, ficheros o memoria.
- Es relevante especificar el modo de salida: añadir, actualizar o reemplazar completamente el fichero de salida.
- Se lee un directorio de HDFS donde otro proceso externo crea ficheros con información de retrasos de vuelos y se calcula el retraso medio por aeropuerto, actualizando el fichero de salida de forma automática.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.