Escribir dataframe en Elastic con Scala

Prerequisitos Tener configurado la paquetería de Spark para IntelliJ IDEA Incluir en el fichero pon la paquetería propia de Elastic: <!– https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch-spark-20 –> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId> <version>6.4.2</version> </dependency>   Ejemplo de como escribir un dataframe transformado a Mapa en un Elastic 6.4.2 local en Scala 2.1.1. package com.scala import org.apache.spark.sql.SparkSession import org.apache.spark.{SparkConf, SparkContext} import org.elasticsearch.spark._…

Read More »

Añadir columna en Dataframe en Scala

Añadir columna de unos Se suele añadir una coñumna de unos para en posteriores operaciones de reduce realizar recuentos por agrupación. val df = Seq( («id1», 1), («id1», 2), («id1», 3), («id1», 4), («id2», 1), («id2», 2), («id2», 3), («id3», 1), («id3», 2) ).toDF(«id», «valor») val df_plus = df.withColumn(«new_column», lit(1)) df_plus.show() +—+—–+———-+ | id|valor|new_column| +—+—–+———-+…

Read More »

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 »

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 »

Ordenar datos en R

Ordenar dataframe por una columna datos <- datos[with(datos, order(datos$id)), ] # Orden directo datos ## id texto valor categorias ## 9 0 c 7 alto ## 1 1 a 2 muy bajo ## 2 4 b 8 alto ## 8 4 b 3 bajo ## 6 6 b 9 muy alto ## 5 7 a…

Read More »

Unificar categorías de dataframe en R

Unificar categorias sustituyendo por elementos de un conjunto # Ampliar el conjunto de datos datos$sexo <- c(«masculino»,»h», «hombre», «h»,»mujer»,»femenino», «mujer», «m») # Ver que valores toma la variable unique(datos$sexo) ## [1] «masculino» «h» «hombre» «mujer» «femenino» «m» # Definir los nombres que pueden aparecer en el cojunto de datos nombres.hombre <- c(«masculino», «hombre», «h») nombres.mujer…

Read More »