OpenWebinars

Big Data

Datasets y DataFrames en Apache Spark

Te contamos que son los Datasets y DataFrames en Apache Spark. Conoce sus características y cómo usarlos en la práctica que te proponemos con este framework revolucionario del big data.

Abraham Requena Mesa

Abraham Requena Mesa

Experto en Big Data

Lectura 2 minutos

Publicado el 4 de julio de 2018

Compartir

    Tabla de contenidos

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)

Aprende a programar scripts de procesamiento de datos capaces de ejecutarse de forma clusterizada mediante el framework Apache Spark.

curso-spark-sql

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Compartir este post

También te puede interesar

Big Data: La evolución de los datos
Blog

Big Data: La evolución de los datos

En esta era digital a diario se están generando grandes cantidades de datos de forma exponencial, pero el verdadero reto está en...

Abraham Requena Mesa
Qué es Apache Spark
Blog

Qué es Apache Spark

Te contamos qué es Apache Spark, el framework open source de computación con el que se consigue&nbsp; ganar en velocidad a la...

Abraham Requena Mesa