Unir tablas con SQL Spark en Scala

Ejemplo: Unir tablasscala logo

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 join gustos g
      |on p.id = g.id
    """.stripMargin)
    .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

spark
    .sql(
    """select p.*, g.*
      |from personas p
      |left outer join gustos g
      |on p.id = g.id
    """.stripMargin)
    .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

spark
    .sql(
    """select p.*, g.*
      |from personas p
      |right outer join gustos g
      |on p.id = g.id
    """.stripMargin)
    .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|
+----+------+--------+----+-------+---+--------+-------+

Otros artículos que pueden ser de interés:

Autor: Diego Calvo