Skip to content

Apache Spark: Introducción a Spark Sql

Share on twitter
Share on linkedin
Share on email
Share on whatsapp

Todo el mundo oye hablar de Big Data, de cómo el procesamiento masivo de datos puede ayudarnos a buscar soluciones a problemas que hasta ahora nos parecían demasiado volumétricos y cuyo procesamiento dependía de un tiempo del que no disponemos. Hablo del tipo de problemas a los que nos enfrentamos las compañías para ofrecer a nuestros clientes servicios como sistemas de recomendaciones, sistemas de predicción, análisis de fraude o incluso los sistemas de vídeo y audio en streaming.

Actualmente existen multitud de tecnologías que ofrecen una solución a estos problemas, entre ellas está Apache Spark que es uno de los sistemas de procesamiento más extendidos actualmente, tanto para datos estructurados como no estructurados.

¿Qué es Apache Spark?

Apache Spark es un framework de computación distribuida en cluster, basada en un sistema de operaciones (transformaciones y acciones) realizadas sobre colecciones de datos distribuidas, denominadas RDD (Resilient Distributed Dataset).

Una de las ventajas que hace a Spark un sistema eficiente y rápido para el tratamiento masivo de datos es que los RDD se almacenan en memoria, permitiendo un acceso más rápido a ellos para la realización de operaciones complejas.

Sin embargo, la razón por la que Spark se ha extendido tanto y se ha convertido en una tecnología de referencia para el procesamiento de datos, es que se trata de un proyecto Open Source en continuo desarrollo, con una enorme comunidad activa. Debido a esto, se han ido desarrollando diferentes librerías diseñadas para solucionar diferentes tipos de problemas.

Entre todos los módulos que posee Spark, en este artículo vamos a profundizar en Spark SQL.

Spark Sql

Cuando se habla de datos estructurados nos referimos a la información que suele encontrarse en la mayoría de bases de datos, información etiquetada y controlada que puede encontrarse en filas o en columnas. Spark SQL se utiliza principalmente para el tratamiento de este tipo de información y lo hace mediante DataFrames.

Los DataFrames son conjuntos de datos distribuidos y organizados por columnas que pueden ser construidos a partir de diversas fuentes de datos como Cassandra, HIVE, Elastic Search, JDBC, ficheros csv, json, avro, etc. o directamente desde un RDD ya existente. Por explicarlo de una forma más sencilla, los DataFrames son conceptualmente equivalentes a las tablas de una base de datos relacional.

La API de Spark SQL permite la conexión a las fuentes de origen, obteniendo así los datos y pasando a ser gestionados en memoria mediante Spark.

Ejemplo de construcción de un DataFrame mediante JDBC

Y entonces, ¿Qué ventajas nos ofrece tratar toda esta información con Spark?

Teniendo en cuenta que el origen de datos de una compañía puede ser diverso, manteniendo información estructurada o semi-estructurada en diferentes sistemas, una casuística habitual en la que aplicarlo podría ser la de una compañía de ventas que obtiene información de los movimientos que realizan sus clientes, almacena registros de todas sus ventas y además recibe más información de otras fuentes de datos externas, en formato json.

Con Apache Spark se podría unificar toda esta información y procesarla para obtener resultados, como por ejemplo, conocer cuales son sus clientes potenciales o qué clientes repiten su experiencia realizando otros pedidos.

Con esto, concluimos que Spark SQL nos provee de una capa de abstracción que da soporte a datos estructurados o semi-estructurados, y, que proporciona las siguientes ventajas:

  •  Unificar información distribuida en diferentes entornos o sistemas de almacenamiento.
  •  Explorar y analizar datos con un alto nivel de abstracción mediante lenguaje SQL, permitiendo su uso a personas no especializadas.
  •  Elimina restricciones impuestas por las fuentes de datos de origen. Por ejemplo, Cassandra no permite realizar querys filtrando por campos no incluidos en la Primary Key, sin embargo, Spark SQL al mantener toda la información en memoria permite realizar consultas sobre cualquier tipo de dato.
  •  Operaciones optimizadas. La API ofrece multitud de métodos de transformación que abstraen de la complejidad a bajo nivel, garantizando un proceso óptimo.
  •  Trabajar con una plataforma de código abierto en continuo desarrollo, con una gran comunidad activa.

Comparte el artículo

Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on email
Email
Share on whatsapp
WhatsApp

Una nueva generación de servicios tecnológicos y productos para nuestros clientes