Filtrar DataFrame en Scala

Filtrar de datos con likelogo scala

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 'Garc%' AND edad < 30")
filter_df.show()
+------+--------+----+-------+-------------------+
|nombre|apellido|edad|salario|          timestamp|
+------+--------+----+-------+-------------------+
|  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|
+------+--------+----+-------+-------------------+

+------+--------+----+-------+-------------------+
|nombre|apellido|edad|salario|          timestamp|
+------+--------+----+-------+-------------------+
|  Paco|  Garcia|  24|  24000|2018-08-06 00:00:00|
|  Juan|  Garcia|  26|  27000|2018-08-07 00:00:00|
+------+--------+----+-------+-------------------+

Filtrar de datos por elemento coincidente

Ejemplo que realiza un filtrado para seleccionar las personas que con el apellido «Garcia»

df.filter("apellido == 'Garcia'").show()
+------+--------+----+-------+
|nombre|apellido|edad|salario|
+------+--------+----+-------+
|  Paco|  Garcia|  24|  24000|
|  Juan|  Garcia|  26|  27000|
|  Sara|  Garcia|  35|  34000|
+------+--------+----+-------+

Filtrar de datos del resultado de una agrupación

Ejemplo que realiza un filtrado para seleccionar los apellidos que se repitan más de dos veces

df.groupBy("apellido").count().filter("count > 2").show()
+--------+-----+
|apellido|count|
+--------+-----+
|  Garcia|    3|
+--------+-----+