Ejemplo: Unir tablas
Unir tablas que tenga el identificador comun
val df_personas = 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") val df_gustos = Seq( (1,"Rojo","Pasta"), (2,"Amarillo","Pizza"), (3,"Azul","Patatas"), (5,"Rojo","Pizza"), (6,"Negro","Pulpo") ).toDF("id", "color","comida") df_personas .join(df_gustos, "id") .select("nombre", "edad", "color", "comida") .show()
+------+----+--------+-------+ |nombre|edad| color| comida| +------+----+--------+-------+ | Paco| 24| Rojo| Pasta| | Juan| 26|Amarillo| Pizza| | Lola| 29| Azul|Patatas| +------+----+--------+-------+
Ejemplo: Unir tablas especificando los identificadores de unión
Unir tablas que tenga especificando el identificador
df_personas .join(df_gustos, df_gustos("id") === df_personas("id")) .show() df_personas .join(df_gustos, Seq("id"), "inner") .show()
+---+------+--------+----+-------+---+--------+-------+ | id|nombre|apellido|edad|salario| id| color| comida| +---+------+--------+----+-------+---+--------+-------+ | 1| Paco| Garcia| 24| 24000| 1| Rojo| Pasta| | 2| Juan| Garcia| 26| 27000| 2|Amarillo| Pizza| | 3| Lola| Martin| 29| 31000| 3| Azul|Patatas| +---+------+--------+----+-------+---+--------+-------+
Ejemplo: Unir tablas por la derecha
df_personas .join(df_gustos, Seq("id"), "left_outer") .show()
+---+------+--------+----+-------+----+--------+-------+ | id|nombre|apellido|edad|salario| id| color| comida| +---+------+--------+----+-------+----+--------+-------+ | 1| Paco| Garcia| 24| 24000| 1| Rojo| Pasta| | 2| Juan| Garcia| 26| 27000| 2|Amarillo| Pizza| | 3| Lola| Martin| 29| 31000| 3| Azul|Patatas| | 4| Sara| Garcia| 35| 34000|null| null| null| +---+------+--------+----+-------+----+--------+-------+
Ejemplo: Unir tablas por la izquierda
df_personas .join(df_gustos, Seq("id"), "right_outer") .show()
+----+------+--------+----+-------+---+--------+-------+ | id|nombre|apellido|edad|salario| id| color| comida| +----+------+--------+----+-------+---+--------+-------+ | 1| Paco| Garcia| 24| 24000| 1| Rojo| Pasta| | 2| Juan| Garcia| 26| 27000| 2|Amarillo| Pizza| | 3| Lola| Martin| 29| 31000| 3| Azul|Patatas| |null| null| null|null| null| 5| Rojo| Pizza| |null| null| null|null| null| 6| Negro| Pulpo| +----+------+--------+----+-------+---+--------+-------+
Ejemplo: Añadir filas a una tabla
var df_personas1 = Seq( (1,"Paco","Garcia"), (2,"Lucia","Garcia"), (4,"Sara","Garcia") ).toDF("id","nombre", "apellido") val df_personas2 = Seq( (1,"Andres","García"), (2,"Sara","Montes") ).toDF("id","nombre", "apellido") df_personas1 = df_personas1.union(df_personas2) df_personas1.show()
+---+------+--------+ | id|nombre|apellido| +---+------+--------+ | 1| Paco| Garcia| | 2| Lucia| Garcia| | 4| Sara| Garcia| | 1|Andres| García| | 2| Sara| Montes| +---+------+--------+
Primero que nada tu pagina esta excelente para uno que va iniciando en scala. Super completa.
Sobre el el ejemplo Ejemplo: «Añadir filas a una tabla», veo que es como el union all del sql en vez de añadir registros a una tabla, es mi humilde sugerencia, saludos,