
En este primer vídeo, veremos como instalar el software necesario para seguir el curso en un sistema con Microsoft Windows. Instalaremos el gestor de máquinas virtuales VirtualBox y la herramienta para la creación y configuración de entornos de desarrollo virtualizados.Vagrant. Con estas herramientas, descargaremos una máquina virtual que ya dispone de Apache Spark y los notebooks de Apache Zeppelin con el contenido del curso.
Veremos como instalar el software necesario para seguir el curso en un sistema con Ubuntu Linux. Instalaremos el gestor de máquinas virtuales VirtualBox y la herramienta para la creación y configuración de entornos de desarrollo virtualizados.Vagrant. Con estas herramientas, descargaremos una máquina virtual que ya dispone de Apache Spark y los notebooks de Apache Zeppelin con el contenido del curso.
En esta clase haremos una introducción a Apache Spark, destacando:
Seguiremos trabajando sobre estos puntos a lo largo del curso.
En esta clase veremos como crear y visualizar la estructura de datos básica para trabajar con Apache Spark, los denominados RDDs (Resilient Distributed Datasets).
En esta clase haremos una introducción a las operaciones básicas que se pueden hacer sobre los RDDs, y que son de dos tipos: transformaciones y acciones. Las transformaciones convierten un RDD en otro RDD realizando una operación sobre el primero. Las acciones, por su parte, extraen valores (simples o compuestos) a partir de un RDD.
En este vídeo vamos a ver las transformaciones que se pueden hacer sobre un RDDs simple y que afectan a cada uno de los elementos del mismo.
En esa clase veremos un conjunto pequeño de transformaciones que utilizan dos RDDs y que hacen operaciones de tipo conjunto, como, por ejemplo, uniones, intersecciones y otras, generando un tercer RDDs con datos de los dos de partida.
El
primer tipo de acciones que vamos a comentar son las de agregación,
que, como su nombre indica, agregan los elementos del RDD para
obtener un valor final. Las principales acciones de este tipo son reduce, fold y aggregate.
En esta clase veremos otras acciones para extraer información de RDDs simples. En concreto veremos dos tipos:
En esta clase introduciremos un tipo de RDD muy importante en la programación en Apache Spark, los denominados RDDs clave/valor o Pair RDDs. Veremos en este vídeo como crear este tipo de RDDs a partir de listas de tuplas o de RDDs simples.
En este vídeo veremos un conjunto de transformaciones que se pueden aplicar sobre un RDD de tipo clave/valor.
Completando el vídeo anterior, veremos ahora un conjunto de transformaciones que actúan sobre dos RDDs de tipo clave/valor para generar un nuevo RDD del mismo tipo.
Veremos ahora una serie de acciones aplicables a RDD de tipo clave/valor.
En esta clase veremos algunos métodos de estadística descriptiva que implementa Spark para usar con RDDs numéricos.
En esta clase estudiaremos aspectos relacionados con la persistencia y el particionado de los RDDs.
Spark permite que los RDDs se almacenen en memoria y/o disco para evitar tener que recalcularlos cada vez que se necesiten: este mecanismo se denomina persistencia.
Por otro lado, Spark permite indicar el número de particiones en que queremos repartir un RDD no sólo en el momento de crearlo, sino también al realizar una transformación sobre el mismo. Adicionalmente, Spark incluye funciones que permiten el reparticionado de los RDD ya creados.
En esta clase estudiaremos en comando spark-submit, que permite lanzar trabajos Spark desde línea de comandos. Veremos diferentes parámetros que pueden ajustarse en el momento de iniciar el trabajo.
En esta clase veremos como el interfaz web nos permite acceder a información detallada sobre la ejecución de los trabajos Spark.
Dedicaremos esta clase a ver otros aspectos avanzados de Apache Spark, como son los acumuladores, las variables de broadcast y los métodos para trabajar a nivel de partición.
En esta clase veremos como crear DataFrames. Los Dataframes son el tipo de datos básico de Spark SQL.
En esta clase veremos un conjunto de operaciones para procesar DataFrames.
En esta clase introduciremos la tecnología Spark Streaming, para procesamiento escalabre y de alto rendimiento de flujos de datos en tiempo real.
Spark MLlib es una librería de algoritmos de aprendizaje automático (machine learning) desarrollados sobre Apache Spark.
En esta última clase haremos una introducción a GraphX, el módulo de Apache Spark para procesamiento de grafos.
A través de este curso los alumnos aprenderán a programar con Apache Spark, la solución más eficiente y popular para procesar enormes cantidades de datos en clusters de cientos de máquinas.
Spark es hasta 100 veces más rápido que Apache Hadoop si el procesamiento se hace en memoria y 10 veces más rápido si se hace en disco. Para conseguir este rendimiento, Spark incorpora un motor de ejecución avanzado basado en Grafos Dirigidos Acíclicos (DAGs) de tareas que permite el flujo de datos acíclico u la computación en memoria.
Spark es fácil de usar, y permite utilizar diferentes lenguajes de programación, en concreto Python, Scala, Java o R. Ofrece más de 80 operadores de alto nivel que facilitan la creación de programas paralelos escalables a cientos o miles de máquinas. Y es posible utilizarlo de forma interactiva mediante los interpretes de Python, Scala o R, o utilizando herramientas como Apache Zeppelin, como veremos en este curso.
Spark se puede ejecutar en un PC simple, en un cluster con Hadoop YARN o Apache Mesos, o en la nube, con soluciones como Amazon Elastic MapReduce o Microsoft HDInsight. Y puede acceder a datos almacenados el HDFS, Cassandra, HBase, Hive, Tachyon y cualquier fuente de datos accesible por Hadoop.
Empezaremos viendo los elementos básicos de la programación Spark: los RDDs o Resilient Distributed DataSets. Veremos como crearlos, transformarlos y operar con ellos para procesar nuestros archivos.Continuaremos viendo aspectos avanzados para mejorar y optimizar nuestros códigos Spark y finalizaremos adentrándonos en el conjunto de soluciones de alto nivel de Spark: Spark SQL, Spark Streaming, Spark ML para problemas de Machine Learning, y GraphX para procesamiento de grafos. Todas estas soluciones pueden combinarse en la misma aplicación para alcanzar nuestros objetivos.