5 Spark III y MLlib

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 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?

  • 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?

  • 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'?

<p>Un 'transformer' no necesita aprender ningún parámetro del DataFrame de entrada, a diferencia de un 'estimator'. (B)</p> Signup and view all the answers

¿Qué funcionalidad ofrece Spark Structured Streaming en comparación con el procesamiento batch tradicional?

<p>Capacidad de añadir filas automáticamente, en tiempo real, según van llegando. (A)</p> Signup and view all the answers

¿Cuál es el propósito del StringIndexer en Spark ML?

<p>Convertir cadenas de texto a números reales para algoritmos de <em>machine learning</em>. (B)</p> Signup and view all the answers

¿Cómo se asegura Spark ML de que los nuevos datos para predicción pasen por el mismo preprocesamiento que los datos de entrenamiento?

<p>A través de los 'pipelines', que encapsulan todas las etapas de preprocesamiento. (C)</p> Signup and view all the answers

¿Qué API de Spark ML se considera la actual y recomendada para usar con DataFrames?

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

En Spark Structured Streaming, ¿qué se debe hacer para asegurar que se detecte el esquema de los ficheros de entrada?

<p>Activar explícitamente la opción de inferencia de esquema o especificar el esquema del fichero de entrada. (B)</p> Signup and view all the answers

¿Qué implica el modo de salida 'complete' en Spark Structured Streaming?

<p>Reemplazar completamente el fichero de salida con los resultados de cada actualización. (D)</p> Signup and view all the answers

¿Cuál es la función del VectorAssembler en Spark ML?

<p>Combinar múltiples columnas en una sola columna de tipo vector. (D)</p> Signup and view all the answers

¿En qué se diferencia el procesamiento online del procesamiento batch según el contenido?

<p>El procesamiento online exige reentrenar desde cero a menos que se use aprendizaje incremental, mientras que el <em>batch</em> entrena con datos preexistentes. (B)</p> Signup and view all the answers

Según el contenido, ¿cuál es la mejor manera de desplegar modelos de machine learning entrenados con Spark en producción?

<p>Desplegando los modelos como microservicios que reciben datos a través de llamadas HTTP. (A)</p> Signup and view all the answers

¿Qué restricción impone Spark para los algoritmos de recomendación?

<p>Solo permite el uso de filtrado colaborativo. (B)</p> Signup and view all the answers

Para los algoritmos que no soportan variables categóricas, ¿qué transformación es necesaria?

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

¿Qué ocurre cuando se llama al método fit() de un 'pipeline' en Spark ML?

<p>Se recorre cada etapa del 'pipeline', aplicando transformaciones y entrenando modelos según sea necesario. (C)</p> Signup and view all the answers

¿Qué tipos de fuentes de datos puede usar Spark Structured Streaming para la entrada?

<p>Kafka, sistemas de ficheros como HDFS y <em>sockets</em>. (C)</p> Signup and view all the answers

Si se tiene un 'pipeline' ya entrenado, ¿qué método se debe utilizar para realizar predicciones sobre nuevos datos?

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

¿Qué significa que un 'pipeline' es también un 'estimator'?

<p>Significa que requiere un <code>fit</code> previo para aprender las transformaciones y modelos a aplicar. (B)</p> Signup and view all the answers

Según lo revisado, ¿Spark fue concebido para explotación online de modelos entrenados?

<p>No, ya que la fortaleza de Spark está en entrenar modelos en modo <em>batch</em>. (A)</p> Signup and view all the answers

¿Cuál de las siguientes opciones no es una posibilidad que ofrezca Spark para el preprocesamiento de los datos?

<p>Aplicar algoritmos de ensamblaje de modelos. (D)</p> Signup and view all the answers

¿Cuál es el proceso para usar Structured Streaming con Spark?

<p>Iniciar la ejecución del programa y este correrá indefinidamente, actualizando lo resultados periódicamente. (D)</p> Signup and view all the answers

¿Qué interfaz tiene un único método transform(df: dataframe)?

<p>Transformer (C)</p> Signup and view all the answers

Según el texto, ¿si tenemos cinco clases, como se tienen que codificar éstas?

<p>0.0, 1.0, 2.0, 3.0, 4.0 (A)</p> Signup and view all the answers

Flashcards

¿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?

Proceso que encapsula etapas de preprocesamiento y modelado para asegurar consistencia en datos nuevos.

¿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?

Paquete actual de Spark MLlib basado en DataFrames, que se debe utilizar siempre que sea posible.

Signup and view all the flashcards

¿Qué transformación permite escribir código SQL en Spark ML?

Transformación que permite escribir código SQL arbitrario e incluirlo en un pipeline de Spark ML.

Signup and view all the flashcards

¿Qué es un Transformer en Spark ML?

Objeto que recibe DataFrames, transforma columnas y devuelve un DataFrame con una nueva columna añadida.

Signup and view all the flashcards

¿Qué es VectorAssembler?

Transformador que concatena varias columnas en una sola columna de tipo vector.

Signup and view all the flashcards

¿Qué es un modelo entrenado en Spark ML?

El resultado de entrenar un modelo sobre un DataFrame, capaz de transformar nuevos DataFrames para hacer predicciones.

Signup and view all the flashcards

¿Qué es un Estimator en Spark ML?

Objeto capaz de realizar transformaciones que requieren ajustar parámetros a partir de los datos de entrada.

Signup and view all the flashcards

¿Qué es StringIndexer?

Estimador para preprocesar variables categóricas, convirtiéndolas en números reales.

Signup and view all the flashcards

¿Qué es OneHotEncoderEstimator?

Estimador que convierte columnas categóricas en variables dummy con codificación one-hot.

Signup and view all the flashcards

¿Qué es una Pipeline en SparkML?

Secuencia de etapas (Estimator o Transformer) que se ejecutan en un orden para transformar un DataFrame.

Signup and view all the flashcards

¿Qué es Spark Structured Streaming?

Módulo de Spark que procesa datos en tiempo real, añadiendo filas automáticamente a los DataFrames según llegan.

Signup and view all the flashcards

¿Qué hay que activar explícitamente en Structured Streaming?

Hay que activar explícitamente la opción de inferencia de esquema en Structured Streaming o especificar el esquema del fichero de entrada.

Signup and view all the flashcards

¿Cuáles son los modos de salida en Structured Streaming?

Los modos de salida en Structured Streaming son: añadir, actualizar y reemplazo completo.

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.
  • El contenido del módulo spark.mllib ha sido migrado al módulo spark.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étodo fit(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 un estimator.
    • Su método fit(df) recorre cada etapa, llamando a transform() si es un transformador o a fit(df) y luego transform(df) si es un estimador.
  • 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 objeto pipeline devuelve un objeto PipelineModel, 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 objeto SparkSession.
  • 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.

Quiz Team

Related Documents

Use Quizgecko on...
Browser
Browser