Spark SQL en Scala

Registrar tabla temporal a partir de dataframescala logo

Spark permite la posibilidad de definir «Spark SQL» para poder hacer consultas en formato SQL sobre datos en scala.

val df = Seq(
  ("id1", 1,1),
  ("id1", 2,1),
  ("id1", 3,1),
  ("id1", 4,1),
  ("id2", 1,1),
  ("id2", 2,1),
  ("id2", 3,1),
  ("id3", 1,1),
  ("id3", 2,1)
).toDF("id", "valor1","valor2")

df.createOrReplaceTempView("df_temp")

 

Visualizar tablas temporales de la sesión Spark SQL

Spark crea una sesión «SparkSesion» en la que se puede invocar a diferentes funciones para consultar las tablas almacenadas temporalmente. (Nota: en Hortonworks se invoca mediante «spark»)

spark.catalog.listTables.show
+-------+--------+-----------+---------+-----------+
|   name|database|description|tableType|isTemporary|
+-------+--------+-----------+---------+-----------+
|df_temp|    null|       null|TEMPORARY|       true|
+-------+--------+-----------+---------+-----------+

Visualizar contenido de una tabla Spark SQL

Para visualizar el contenido de una tabla se puede invocar como si se tratase de sentencias SQL

spark
    .sql("select * from df_temp")
    .show()
+---+------+------+
| id|valor1|valor2|
+---+------+------+
|id1|     1|     1|
|id1|     2|     1|
|id1|     3|     1|
|id1|     4|     1|
+---+------+------+