Filtrar DataFrame en Scala

Filtrar de datos con like Ejemplo que realiza un filtrado para seleccionar las personas que su apellido contiene «Garc» y cuya edad es menor de 30. val df = sc.parallelize(Seq( («Paco»,»Garcia»,24,24000,»2018-08-06 00:00:00″), («Juan»,»Garcia»,26,27000,»2018-08-07 00:00:00″), («Ana», «Martin»,28,28000,»2018-08-14 00:00:00″), («Lola»,»Martin»,29,31000,»2018-08-18 00:00:00″), («Sara»,»Garcia»,35,34000,»2018-08-20 00:00:00″) )).toDF(«nombre»,»apellido»,»edad»,»salario»,»fecha_reg») val type_df = df.select($»nombre»,$»apellido»,$»edad»,$»salario», unix_timestamp($»fecha_reg», «yyyy-MM-dd HH:mm:ss»).cast(TimestampType).as(«timestamp»)) type_df.show() val filter_df = type_df.filter(«apellido like…

Read More »

Leer Json en Scala

Leer Json de cadena de texto Ejemplo simple de lectura de Json a partir de una cadena de texto val events = sc.parallelize( «»» [{«accion»:»create»,»tiempo»:»2018-08-07T00:01:17Z»}, {«accion»:»create»,»tiempo»:»2018-08-07T00:01:17Z»}] «»» :: Nil) val df = sqlContext.read.json(events) df.printSchema() df.show() root |– accion: string (nullable = true) |– tiempo: string (nullable = true) +——+——————–+ |accion| tiempo| +——+——————–+ |create|2018-08-07T00:01:17Z| |create|2018-08-07T00:01:17Z| +——+——————–+…

Read More »

Calcular tiempo de ejecución en Scala

Para calcular el tiempo de ejecución basta con medir el tiempo inicial y final. Una vez obtenidos se realiza la resta entre ellos. Calculo de tiempo en nanosegundos val t_ini = System.nanoTime() val realizar_calculos = «Aquí se introduce el bloque que se desea medir el tiempo que tarda» val t_fin = System.nanoTime() val tiempo =…

Read More »

Regresión lineal en Scala

En el siguiente post se muestran los pasos a seguir para recrear un ejemplo de regresión lineal en Scala. Definir el conjunto de datos Se define el conjunto de datos sobre el que aplicar el modelo import org.apache.spark.ml.linalg.Vectors val df = spark.createDataFrame(Seq(     (0, 60),     (0, 56),     (0, 54),     (0, 62),   …

Read More »

Conectar con Scala al HDFS de Hadoop

Escribir datos en HDFS Ejemplo de como escribir datos RDD en un HDFS de Hadoop. // Borrar el fichero si es que existe import scala.sys.process._ «hdfs dfs -rm -r /pruebas» ! // Grabar un RDD en HDFS val rdd = sc.parallelize(List(     (0, 60),     (0, 56),     (0, 54),     (0, 62),     (0,…

Read More »

DataFrames en Scala

Crear DataFrames Ejemplo de como crear un dataframe en Scala. import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}; val data = List( Row(«Paco»,»Garcia»,24,24000), Row(«Juan»,»Garcia»,26,27000), Row(«Lola»,»Martin»,29,31000), Row(«Sara»,»Garcia»,35,34000) ) val rdd = sc.parallelize(data) val schema = StructType( List( StructField(«nombre», StringType, nullable=false), StructField(«apellido», StringType, nullable=false), StructField(«edad», IntegerType), StructField(«salario», IntegerType) ) ) val df = spark.createDataFrame(rdd,schema) df.printSchema() df.show() root |– nombre: string…

Read More »

Estructuras de datos en Scala

 RDD (Resilient Distributed Dataset) Datos no estructurados, ejemplo: binarios, text streaming. Utiliza acciones y transformaciones de bajo nivel No soporta serialización Encoders. No de un esquema ni formato de columna. Proporciona serguridad de tipo en tiempo de compilación.   DataFrames – DataFrames Datos estructurados (entradas RDBMS) o semi-estructurados (json, csv) Necesita ejecutar consultas hive Mayor rendimiento…

Read More »

Listas en Scala

Crear listas Ejemplos donde se definen las listas a utilizar en el resto de los apartados del post val list1 = 1::2::3::4::5::Nil val list2 = List(1,2,3,4,5) val list3 = List.range(1,6) val list4 = List.range(1,6,2) val list5 = List.fill(5)(1) val list6 = List(«Paco»,»Andres»,»Sonia»,»Maria») val list7 = List.tabulate(5)(n => n * n) list1: List[Int] = List(1, 2, 3,…

Read More »

HDFS – Formato, compresión y descompresion en Scala

Muestra una serie de ejemplos de compresión y descompresión de archivos en diferentes formatos tanto de representación como de compresión. Comprimir archivos Json val rdd = sc.parallelize( Array(1, 2, 3, 4, 5) ) // Definir RDD val df = rdd.toDF() // Transformar a df df.write.mode(«overwrite»).format(«json»).save(«hdfs:///formats/file_no_compression_json») df.write.mode(«overwrite»).format(«json»).option(«compression», «gzip»).save(«hdfs:///formats/file_with_gzip_json») df.write.mode(«overwrite»).format(«json»).option(«compression», «snappy»).save(«hdfs:///formats/file_with_snappy_json») Comprimir archivos Parquet val rdd =…

Read More »