Ejecución distribuida Spark para Python

Ejemplo «Hola mundo» Definir el script en Python a ejecutar Código del fichero hola_mundo.py from pyspark.sql import SparkSession spark = SparkSession.builder.appName(«Hola_Mundo»).getOrCreate() print(«Hola mundo») spark.stop() Nota: Al ser un lenguaje interpretado no es necesario compilarlo para su ejecución.   Ejecución distribuida del script Para ejecutar de forma distribuida el script en python detro de un entorno…

Read More »

Procesar datos en tiempo real (streaming) en Scala

Prerequisitos Limpiar todos los hdfs generados, utilizando la linea de comandos hdfs dfs -rm -r /streaming hdfs dfs -mkdir /streaming hdfs dfs -ls /streaming Generar datos usados para iniciar el análisis Se genera una serie de datos en formato json que se almacenan en un fichero hdfs. val events = sc.parallelize( «»»  [{«accion»:»Abrir», «tiempo»:»2018-08-01T00:01:17Z»},  …

Read More »

Agrupar elementos de un dataframe en Scala

Ejemplo: Agrupar datos de forma simple Ejemplo donde se agrupa la tabla personas por apellido df.groupBy(«apellido»).count().show() +——–+—–+ |apellido|count| +——–+—–+ | Martin| 1| | Garcia| 3| +——–+—–+ Ejemplo: Agrupar datos combinado con filtro Ejemplo donde se agrupa la tabla personas por apellido y se selecciona los que tenga más de 2 apariciones. df.groupBy(«apellido»).count().filter(«count > 2»).show() +——–+—–+…

Read More »

Ordenar dataframe en Scala

Ejemplo: Ordenar datos simple Ejemplo donde se ordena la tabla personas por nombre df.sort(desc(«nombre»)).show() df.sort($»nombre».desc).show() df.orderBy($»nombre».desc).show() +——+——–+—-+——-+ |nombre|apellido|edad|salario| +——+——–+—-+——-+ | Sara| Garcia| 35| 34000| | Paco| Garcia| 24| 24000| | Lola| Martin| 29| 31000| | Juan| Garcia| 26| 27000| +——+——–+—-+——-+   Ejemplo: Ordenar datos por varios criterios Ejemplo donde se ordena la tabla personas por…

Read More »

Funciones estadísticas de dataframes en Scala

Ejemplo de funciones estadiscias: media Muestra un ejemplo de como realizar la media sobre un conjunto de datos val df = Seq(   («Paco»,»Garcia»,24,24000),   («Juan»,»Garcia»,26,27000),   («Lola»,»Martin»,29,31000),   («Sara»,»Martin»,32,32000),   («Sara»,»Garcia»,35,34000) ).toDF(«nombre», «apellido»,»edad»,»salario») df   .select(avg(«edad»))   .show() +———+ |avg(edad)| +———+ | 29.2| +———+ Ejemplo de funciones estadiscias: suma Muestra un ejemplo de como…

Read More »

Mostar datos de dataframes en Scala

Mostar datos de tabla Muestra los datos del dataframe val df = Seq(   («Paco»,»Garcia»,24,24000),   («Juan»,»Garcia»,26,27000),   («Lola»,»Martin»,29,31000),   («Sara»,»Garcia»,35,34000) ).toDF(«nombre», «apellido»,»edad»,»salario») df.show() +——+——–+—-+——-+ |nombre|apellido|edad|salario| +——+——–+—-+——-+ | Paco| Garcia| 24| 24000| | Juan| Garcia| 26| 27000| | Lola| Martin| 29| 31000| | Sara| Garcia| 35| 34000| +——+——–+—-+——-+ Mostrar resumen de datos Muestra una tabla…

Read More »

Unir tablas con SQL Spark en Scala

Ejemplo: Unir tablas Unir tablas que tenga el identificador comun val df = Seq(   (1,»Paco»,»Garcia»,24,24000),   (2,»Juan»,»Garcia»,26,27000),   (3,»Lola»,»Martin»,29,31000),   (4,»Sara»,»Garcia»,35,34000) ).toDF(«id»,»nombre», «apellido»,»edad»,»salario») df.createOrReplaceTempView(«personas») val df = Seq(   (1,»Rojo»,»Pasta»),   (2,»Amarillo»,»Pizza»),   (3,»Azul»,»Patatas»),   (5,»Rojo»,»Pizza»),   (6,»Negro»,»Pulpo») ).toDF(«id», «color»,»comida») df.createOrReplaceTempView(«gustos») spark     .sql(     «»»select p.*, g.*       |from personas p       |inner…

Read More »

Selecionar y filtrar con SQL Spark en Scala

Ejemplo: Contar datos Contar las personas que sean mayores de 30 años val df = Seq(   («Paco»,»Garcia»,24,24000),   («Juan»,»Garcia»,26,27000),   («Lola»,»Martin»,29,31000),   («Sara»,»Garcia»,35,34000) ).toDF(«nombre», «apellido»,»edad»,»salario») df.createOrReplaceTempView(«personas») spark     .sql(       «»»select         |count(*) as mayores_de_30         |from personas         |where edad > 30     «»».stripMargin)     .show +—————–+ | mayores_de_30 | +—————–+ | 1|…

Read More »

Spark SQL en Scala

Registrar tabla temporal a partir de dataframe Spark permite la posibilidad de definir «Spark SQL» para poder hacer consultas en formato SQL sobre datos en scala. val df = Seq(   («id1», 1,1),   («id1», 2,1),   («id1», 3,1),   («id1», 4,1),   («id2», 1,1),   («id2», 2,1),   («id2», 3,1),   («id3», 1,1),  …

Read More »

Cálculos sobre ventana temporal en Dataframe Scala

Cálculo de media móvil en Dataframe Scala Calcula la media móvil a partir de una ventana temporal de 3 periodos import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions._ val df = sc.parallelize(    List((«Sensor1», «2016-05-01», 50.00),         («Sensor1», «2016-05-03», 45.00),         («Sensor1», «2016-05-04», 55.00),         («Sensor2», «2016-05-01», 25.00),         («Sensor2», «2016-05-04», 29.00),         («Sensor2», «2016-05-06», 27.00))     ).toDF(«sensor», «fecha»,…

Read More »