Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Datasets y DataFrames en Apache Spark

Abraham Requena Mesa
  • Escrito por Abraham Requena Mesa el 04 de Julio de 2018
  • 2 min de lectura | Big Data
Datasets y DataFrames en Apache Spark
El reproductor de video será cargado en breves instantes.

En este video vamos a hablaros sobre DataSet y el DataFrame dentro del framework de Apache Spark.

Vamos a ver una pequeña parte teórica acerca de ambos y posteriormente vamos a realizar una pequeña práctica con DataFrame.

Qué es un DataSet y sus características

Un DataSet es una colección de datos distribuidos que tienen ya una estructura, a diferencia de los RDD, que son conjuntos de datos desestructurados.

Sus características y ventajas principales son:

  • Aparecen a partir de la versión de Spark 1.6.
  • Poseen los beneficios de los RDD.
  • Nos proporciona una API tanto para trabajar con Java como con Scala.
  • No nos proporciona API para Python porque Python pasa directamente a los DataFrame.

Qué es un DataFrame

Un DataFrame es un DataSet que a la vez está organizado en columnas.

Vamos a tener los datos estructurados y cada columna con su nombre correspondiente, con lo que nos va a resultar mucho más sencillo consultar, modificar o transformar ese conjunto de datos.

Qué es una SparkSession

Una SparkSession es el objeto principal o la base a partir de la cual cuelga toda la funcionalidad de Apache Spark.

Es similar al SparkContext de los RDD, pero en este caso, para trabajar con SparkSQL, los DataFrame y DataSet.

Tiene este constructor:

val spark = SparkSession.builder()

Al que se le pueden añadir una serie de parámetros o de nuevas funciones para añadir un nombre, indicar la cantidad de memoria y otros muchos aspectos de configuración.

Práctica con un DataFrame

Como ya hemos dicho antes, a la hora de trabajar con un DataFrame, la base o de donde cuelga toda la funcionalidad es una SparkSession. Para crearla lo que haremos de la siguiente forma:

val spark = SparkSession.builder().appName(“MiApp”).master(“local”).getOrCreate()

Pero antes vamos a importar SparkSQL:

import org.apache.spark.sql.SparkSession

Y una vez generada nuestra SparkSession vamos a crear un DatFrame a partir de un fichero de texto. En este caso emplearemos un fichero que contiene los nombres de los personajes de la serie “Strangers Things”, un archivo json que contiene el nombre, la edad y el sexo de los mismos.

Para cargar este fichero lo vamos a cargar en una variable llamada characters:

val characters = spark.read.json(“/home/vmuser/ficheros/strangersCharacters.json”)

Esto nos va a generar un DataFrame de personajes con tres columnas, columna nombre, columna edad y columna sexo.

Para mostrar ese DataFrame usamos esta función:

characters.show()

Podemos mostrar únicamente los nombres de las columnas del DataFrame:

characters.columns

También podemos mostrar sólo las columnas existentes e información sobre las mismas:

characters.printSchema()

Como hemos comentado antes, se pueden hacer select o query fáciles sobre el DataFrame. Por ejemplo, para mostrar un nuevo DataFrame con la selección de las variables nombre y edad:

characters.select(“nombre”,”edad”).show()

También os comentamos antes que se poseen las mismas ventajas que los RDD, como por ejemplo, podemos aplicar un filtro sobre este DataFrame. En este caso para filtrar los niños (children) que tengan menos de 13 años y que nos muestre esos elementos:

val children = characters.filter($.”edad” < 13)
children.show

Se pueden hacer muchas más operaciones, como por ejemplo mostrar el número de elementos que contiene el DataFrame:

children.count()

O también mostrar los tres primeros elementos del DataFrame:

children.head(3)

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars