Machine Learning with Spark MuleSoft Academy

Acerca del Curso -

Introducción a Big Data y Apache Spark. Introducción a Machine Learning. Machine Learning + Big Data. -

Regresión Lineal. Logistic Regression. Random Forests. Y tal vez algo más...

En Esta Clase -

Una muy veloz introducción a Big Data Todo lo que vamos a necesitar de Python El paradigma de programación distribuida: Map Reduce Apache Spark

Big Data “Datos que superan la capacidad normal de procesamiento” -

Los Datos no pueden almacenarse en un solo equipo => Cluster Los algoritmos normales no funcionan

Big Data -

Internet Archive: 80 Tb 1000 Genomes Project: 260 Tb Yahoo News: 13.5 Tb SLOAN Project: 2.5 Pb ImageNet Wikipedia Google Amazon Ebay Twitter Facebook

HDFS

HDFS -

Cada archivo se divide en “n” bloques. Usamos un cluster de “m” equipos. Cada equipo almacena algunos bloques. Los bloques se replican. Existe un “NameNode” que administra todo Los archivos son inmutables (!)

Python

Algunos Elementos de Python -

Estructuras de Datos en Python Funciones anónimas en Python

Estructuras de Datos en Python -

Tuplas Listas

Tuplas t1 = (‘A’,’B’,’C’) t2 = (‘A’,(‘B’,’C’)) t3 = ((‘A’,’B’),(‘C’,’D’,(’E’),’F’))

t1[1] = ? t2[?][?] = ‘C’ t3[???] = ‘E’

Tuplas t1 = (‘A’,’B’,’C’) t2 = (‘A’,(‘B’,’C’)) t3 = ((‘A’,’B’),(‘C’,’D’,(’E’),’F’))

t1[1] = ‘B’ t2[?][?] = ‘C’ t3[???] = ‘E’

Tuplas t1 = (‘A’,’B’,’C’) t2 = (‘A’,(‘B’,’C’)) t3 = ((‘A’,’B’),(‘C’,’D’,(’E’),’F’))

t1[1] = ‘B’ t2[1][1] = ‘C’ t3[???] = ‘E’

Tuplas t1 = (‘A’,’B’,’C’) t2 = (‘A’,(‘B’,’C’)) t3 = ((‘A’,’B’),(‘C’,’D’,(’E’),’F’))

t1[1] = ‘B’ t2[1][1] = ‘C’ t3[1][2][0] = ‘E’

Tuplas -

Las tuplas de 2 elementos son de especial interés porque las podemos considerar un registro de tipo (clave,valor) en donde tanto la clave como el valor pueden tener una estructura arbitraria.

Listas l1 = [‘A’,’B’,’C’,’D’] l2 = [‘A’,’B’,[‘C’,’D’]]

Las tuplas son estructuras estáticas, las listas son dinámicas.

Estructuras Complejas(?) r1 = ((‘A’,’B’),([(‘D’),(‘E’,’F’)],’G’,(‘H’,[‘I’,’J’])) Ejercicio: r1[...] = ‘A’ r1[...] = ‘D’ r1[...] = ‘F’ r1[...] = ‘J’

Funciones Anónimas lambda x: x+1 lambda x, y: x+y lambda r: r[0] + r[1] -

Cada una de estas expresiones devuelve una función. Como no tienen nombre son anónimas.

Funciones Anónimas Dada una lista de números programar una función que aplique una función a cada elemento de la lista.

Funciones Anónimas def applicator(l,f): result = [] for x in l: result.append(f(x))

Funciones Anónimas def applicator(l,f): [f(e) for e in l]

Funciones Anónimas Ejemplo: l1 = [2,3,4,5] l2 = applicator(l1,lambda x: x+1) l2 = [3,4,5,6]

Map Reduce

Map Reduce “MapReduce Simplified Data Processing on Large Clusters” [2004, Jeffrey Dean, Sanjay Ghemawat] -

Surge como necesidad para procesar el PageRank de todas las páginas Web.

Map Reduce -

Procesamiento distribuido vs procesamiento paralelo.

Map Reduce -

El paradigma de Map Reduce está basado en 2 operaciones fundamentales: Map y Reduce. Map es la operación que corre en paralelo en varios equipos del cluster, cada equipo procesa una cierta cantidad de registros del archivo. Reduce es la operación que reúne todos los resultados de Map y genera el resultado final.

Map -

Conceptualmente Map es una operación que recibe un archivo distribuido y una función “f” y aplica la función a cada registro del archivo.

resultFile = file.Map(f)

Map La función “f” debe recibir como parámetro un registro del archivo y puede devolver 1 o más registros en cualquier formato.

f(r) => [r’]

Reduce -

Reduce es una operación que recibe un archivo y una función que procesa exactamente dos registros de nuestro archivo y devuelve un registro El resultado de Reduce no es un archivo, es un registro! Reduce es una operación costosa.

result = file.Reduce(f)

Reduce -

La función reduce recibe 2 (dos) registros y devuelve un registro que debe tener exactamente el mismo formato que los registros anteriores.

f(r1,r2) => r

Apache Spark

Apache Spark -

Creado en AmpLab en la Universidad de Berkeley y donado a la ASF. En general funciona sobre Hadoop y HDFS. Incorpora bibliotecas para Machine Learning, Streamming (*) y Procesamiento de Grafos. APIs para Scala, Python y Java (vamos a usar Python) En este primer curso nos vamos a concentrar en Spark Core. Spark es una mejora de Hadoop permitiendo procesamiento distribuido de forma mucho más eficiente.

Apache Spark: RDDs -

-

RDDs: Resilient distributed datasets. Un RDD es una colección inmutable de registros que se almacena de forma distribuida y que es resistente a fallas. En otras palabras un archivo distribuido. Los RDDs son la estructura básica y fundamental de Spark (hay otras).

El Modelo de Procesamiento de Spark -

Los RDDs se pueden almacenar en memoria, disco o combinación de ambos. Spark intenta mantener en memoria todo lo que puede. Posibilidad de cachear resultados intermedios para reusarlos luego. El modelo de ejecución es lazy, Spark no hace nada hasta que necesita entregar resultados. En base a toda la secuencia de procesos Spark determina la estrategia óptima de ejecución.

Operaciones en Spark -

Las operaciones en Spark se dividen en dos grandes grupos: -

-

Transformaciones Acciones

Las transformaciones son lazy, las acciones desencadenan la ejecución. El proceso de ejecución se basa en una aplicación “driver” y varios “executors”

Arquitectura de Apache Spark

Acciones

Acciones -

Las acciones se aplican a un RDD y devuelven una estructura de datos local. Por lo tanto el procesamiento de un RDD en general implica una serie de transformaciones y finalmente una acción.

Luego de una acción no se puede aplicar una transformación ni una acción. Las acciones siempre son finales.

Acciones Básicas -

collect take reduce

collect -

Collect toma todos los registros de un RDD y los copia al driver, es decir que obtenemos todo el RDD como resultado! Es una operación muy peligrosa, si el RDD es muy grande la memoria del driver puede no ser suficiente. En general es muy buena práctica evitar el uso de collect

take -

Take es una versión más civilizada de collect :) take(n) nos devuelve los primeros “n” registros del RDD Es una operación muy útil para visualizar el formato de un RDD

takeOrdered -

takeOrdered(n) nos devuelve los primeros “n” registros del RDD ordenados de menor a mayor. Podemos indicar por qué criterio ordenar: ej takeOrdered(5,lambda x:-x[1]) takeOrdered implica un sort, no es magia! Usar con responsabilidad

reduce -

reduce es una operación que ya conocemos, recibe una función que debe procesar 2 (dos) registros y devolver otro del mismo formato El resultado de reduce es un único registro

Transformaciones

Transformaciones Básicas -

map flatMap filter reduceByKey

map -

map es una transformación que ya conocemos Recibe una función y la aplica a cada registro del RDD Lo que map devuelve (puede ser cualquier cosa) se convierte en un registro del RDD resultado

flatMap -

flatMap es una versión especial de map Para una función que procesa un registro y devuelve una lista: -

-

map devuelve un único registro con la lista flatMap devuelve un registro por cada elemento de la lista

Ejemplo: si map(x) = [‘a’,’b’,’c’] -

map genera un registro con [‘a’,’b’,’c’] flatMap genera tres registros: ‘a’,’b’ y ‘c’

filter -

-

Filter es una versión especial de map, filter recibe una función que devuelve T o F y devuelve un RDD que contiene los registros para los cuales la función devolvió T. Ejemplo: RDD.filter(lambda x: x>3)

reduceByKey -

reduceByKey es una operación muy importante! Pese a llamarse “reduce” es una transformación y no una acción! reduceByKey asume que nuestros registros son tuplas de 2 elementos (clave,valor). Agrupa los registros por clave y luego aplica reduce a todos los valores de cada clave

reduceByKey (‘a’,3); (‘b’,5); (‘a’,4); (‘a’,6); (‘c’,1);(’b’,2) RDD.reduceByKey(lambda x,y:x+y) (‘a’,13);(‘b’,7);(‘c’,1) -

-

La función que pasamos debe procesar dos VALORES y devolver un valor de igual estructura. Los valores no tienen porque ser atómicos pero su estructura debe mantenerse (regla general de cualquier Reduce) El resultado es un RDD con un registro por cada clave del RDD original

Reduce vs ReduceByKey

Next Week

Machine Learning “Todo lo que usted siempre quiso saber sobre Machine Learning y nunca se animó a preguntar” -

Modelos, Algoritmos, Overfitting, Underfitting, Bias, Variance, Cross Validation, Parámetros, Hiper-Parámetros, No Free Lunch Theorem, Paralelismo, Gradient Descent, Paradigmas de ML, Feature Engineering, etc etc etc....

01 Intro to Apache Spark.pdf

Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. 01 Intro to Apache Spark.pdf. 01 Intro to Apache Spark.pdf. Open.

501KB Sizes 10 Downloads 229 Views

Recommend Documents

7.12 Biofuel 01 intro MH.indd - Nature
Dec 7, 2006 - ers of the Sun's energy; even an intensively managed plantation struggles to store away more than a watt or two per square metre on average.

7.12 Biofuel 01 intro MH.indd - Nature
Dec 7, 2006 - to store away more than a watt or two per square metre on average. But plants ... For a start, unlike solar cells, plants are very cheap to make ...

01 - Intro-overview-cog06b
General description of the brain and its parts. • Subdivisions of the ... relative position of brain structures ... Types of structure-function correlations in. Functional ...

Intro to Webapp - GitHub
The Public Data Availability panel ... Let's look at data availability for this cohort ... To start an analysis, we're going to select our cohort and click the New ...

Intro to Solubility
How do you determine the state of the products? • Use the solubility rules to decide whether a product of an ionic reaction is insoluble in water and will thus form a precipitate ( an insoluble compound formed during a chemical reaction in solution

Intro to Google Cloud - GitHub
Now that you know your way around the Google Cloud Console, you're ready to start exploring further! The ISB-CGC platform includes an interactive Web App, ...

Intro to Webapp SeqPeek - GitHub
brought to you by. The ISB Cancer Genomics Cloud. An Introduction to the ISB-CGC Web App SeqPeek. Page 2. https://isb-cgc.appspot.com. Main Landing ...

Intro to Sociology
+. Norms: □ Expectations about how people should behave. □ Eg. : □ At concerts people yell, scream, cheer. □ In the library, people whisper to keep quiet ...

Intro to Webapp IGV - GitHub
Home Page or the IGV Github Repository. We are grateful to the IGV team for their assistance in integrating the IGV into the ISB-CGC web application.

Intro to Google Cloud - GitHub
The Cloud Datalab web UI has two main sections: Notebooks and Sessions. ... When you click on an ipynb file in GitHub, you see it rendered (as HTML).

Intro to Email.pdf
Page 1 of 25. INTRO TO EMAIL. MATERI PEMBELAJARAN ONLINE. DARI. WWW.DIGITALLEARN.ORG. DITERJEMAHKAN OLEH : MUCHAMAD EKI S. A. ...

Intro to Robotics -
Arduino. • Making the robot move. • Connecting Ultrasonic Sensor. • Control speed using ... Connections for LCD Display, I2C and Serial Communications ports ... Example NewPing library sketch that does a ping about 20 times per second.

Intro to Electrostatics
Intro to Electrostatics. Forces at a Distance. So far in our exploration of forces at a distance, you have read about lightning and how charges between objects (for example, clouds and the ground) can lead to dangerous and exciting results. Now, you

Intro to Google Cloud - GitHub
known as “Application Default Credentials” are now created automatically. You don't really need to click on the “Go to. Credentials”, but in case you do the next ...

ICE MAGIC-01 (01-01-18 TO 06-01-2018).pdf
1 Jan 2018 - SF,FJ0 ZM04 lT~5TL 5[8=M, 5\5 ;FD[4. :JFlDGFZFI6 D\lNZ 5F;[4 ZFHSM8P 9375701110 / 9328001110. (01/01/2018 to 06/01/2018). [JANUARY 2018]. ;\5FNS o DF{l,S UM\lWIF (Director - ICE). www.iceonline.in 93276-01110 icerajkot. CURRENT AFFAIRS.

Intro to Model UN.pdf
anggamunclub.wordpress.com. [email protected]. @unairforhnmun. Airlangga Model United Nations 2013. Universitas Airlangga. 1. Introduction to ...

Intro to Titration Notes Blank.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. Intro to Titration ...

Intro to Google for the Hill - PDFKUL.COM
Google also offers enterprise versions of our consumer products for businesses, organizations, and government ... Android. Android is the first truly open and comprehensive platform for mobile devices. It includes an operating system, user-interface,

Linton's Intro Letter to LVA.pdf
... one of the apps below to open or edit this item. Linton's Intro Letter to LVA.pdf. Linton's Intro Letter to LVA.pdf. Open. Extract. Open with. Sign In. Main menu.

1. intro to real projects
preservation efforts in California. It seemed that ... High Tech High schools in San Diego, California, and the. Learning ... colleges or universities. 35% of these.

Intro to Google for the Hill
Page 2 .... devote their limited resources to projects more strategic to their business. .... electricity from renewable energy sources that is cheaper than electricity.

Intro to Arch Syllabus.pdf
forces, live loads, different types of bridge designs, and innovations in the field of structural engineering. Unit 5: Sustainable Design. Students will learn about the ...

Geol1130-Intro-to-Environmental-Science.pdf
Page 1 of 3. GEOL 1130 Intro. to Environmental Science. Spring, 2014. Location: LSci 185. Time: MWF 10AM. Instructor: Dr. Christina Gallup. Office Hours: W 11-12 PM or by appt. Office Location: 219 Heller Hall. Phone: 726-8984. E-Mail: [email protected].

lecture 2: intro to statistics - GitHub
Continuous Variables. - Cumulative probability function. PDF has dimensions of x-1. Expectation value. Moments. Characteristic function generates moments: .... from realized sample, parameters are unknown and described probabilistically. Parameters a