jueves, 3 de mayo de 2018

Apache Spark Sql


Como habíamos dicho en un ambiente Spark SQL, los 2 componentes más importantes son el DataFrame y el SQLContext.

DataFrame: Un dataframe es una colección de datos distribuida organizada dentro de nombres de columnas. Esto basado en el concepto de dataframe del Lenguaje R y similar al concepto de tablas de las base de datos relacionales.

SchemaRDD, que se encuentra en versiones anteriores de Spark SQL API y se ha renombrado como DataFrame.

DataFrames puede ser convertido en un RDDs, por medio de un método de RDD, el RDD resultante tiene las filas del DataFrames.

Los DataFrames pueden ser creados dados los siguientes origenes de datos:

  • RDDs existentes
  • un archivo estructurado
  • un Json
  • una tabla HIVE
  • y una base de datos externa. 

Spark SQL y DataFrame APIs esta disponible en Scala, Java, Python y R. 

Además de DataFrame, Spark también proporciona la API Dataset. Un Dataset es una colección distribuida de datos similar a los RDD pero que utiliza un codificador para serializar los objetos. La API Dataset está disponible en Scala y Java. Spark SQL admite métodos para convertir RDD existentes en conjuntos de datos.

SQLContext: Spark SQL proporciona SQLContext para encapsular toda la funcionalidad relacional en Spark. Se crea el SQLContext a partir del SparkContext existente, veamos un ejemplo: 

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

También hay HiveContext, que proporciona un superconjunto de la funcionalidad proporcionada por SQLContext. Se puede usar para escribir consultas usando el analizador HiveQL y para leer datos de tablas de Hive.

Notemos que no necesitamos un entorno Hive existente para usar HiveContext en los programas Spark.