Ir al contenido principal

Spark (parte 2)

En el post pasado platicamos un poco por los antecedentes de Spark mostrando el primer estudio que se realizó comparando Spark con Hadoop.

Otra aspecto en el cual Spark arroja resultados sorprendentes es la tarea del ordenamiento de datos, de tal manera que los autores del libro, mencionan que no hay otro sistema en el mundo más rápido que Spark (claro al momento que se escribió dicho libro, en esto de las Tecnologías de la Información todo es relativo).

"Aunque Spark es bien conocido por su rendimiento en memoria, fue diseñado para ser un motor de ejecución general que funciona tanto en memoria como en disco. Por ejemplo, Spark ha configurado el ordenamiento de datos, para el cual los datos no se cargaron en la memoria; más bien, Spark realizó mejoras en la serialización y la  reorganización de la red, así como el uso eficiente de la caché de la CPU para mejorar drásticamente el rendimiento". (Luraschi et al, 2020)

El libro detalla el poder de Spark contra Hadoop para lo cual muestro la siguiente tabla donde podemos hacer una comparación entre estos 2 frameworks al ordenar 100 Terabytes de datos.


Asi mismo la sintaxis de Spark es mucho más sencilla que la de Hadoop y en el libro lo menciona haciendo referencia al ejemplo de "conteo de palabras" con lo que se explicó el esquema MapReduce en el artículo pasado, Hadoop necesita 50 líneas de código contra solo 2 que se necesitan en Spark.

Nuevamente al amor del hombre por el hombre se hace manifiesto y el proyecto Spark se dona en 2013 a la Fundación de Software de Apache, licenciado con Apache 2.0, la cual permite su uso gratuito, y este software puede ser modificado y distribuido.

Entonces podemos concluir en este punto una definición de Spark que se menciona en su sitio web oficial "Apache Spark es un motor de análisis unificado para el procesamiento de datos a gran escala". 

A continuación enlistaremos una serie de características de esta poderosa herramienta:

Unificado.

Spark soporta muchas librerías, tecnologías de cluster y sistemas de almacenamiento.

Analítica.

La analítica es el descubrimiento y la interpretación de datos para producir y comunicar información.

Motor.

Se espera que Spark sea genérico y eficiente. 

Gran escala.

Puedes interpretar gran-escala como escala-de-cluster , es decir un conjunto de computadoras conectadas trabajando juntas.

Uno de los problemas que nos empezamos a encontrar en el Instituto es el manejo de datos con una gran cantidad de registros, y es por eso que Spark se presenta como una buena opción para resolver esta situación, en esta literatura se aborda el termino "Big Compute" que es el tipo de problemas que se nos presentan por ahora en nuestro campo de estudio.

"Por lo tanto, Spark es bueno para abordar problemas de procesamiento de datos a gran escala, generalmente conocidos como Big Data (conjuntos de datos que son más voluminosos y complejos que los tradicionales) pero también es bueno para abordar problemas de computación a gran escala, conocidos como Big Compute ( herramientas y enfoques que utilizan una gran cantidad de recursos de CPU y memoria de forma coordinada). La Big Data a menudo requiere el Big Compute, pero el Big Compute no necesariamente requiere a la Big Data.

Los problemas de Big Data y Big Compute suelen ser fáciles de detectar: si los datos no caben en una sola máquina, es posible que tenga un problema de Big Data; Si los datos encajan en una sola máquina, pero el procesamiento lleva días, semanas o incluso meses para ejecutarse, es posible que se tenga un problema de Big Compute." (Luraschi et al, 2020)

Spark es recomendable también para abordar problemas de velocidad, variedad (obtener datos de muchas fuentes de datos) y veracidad (calidad de los datos).

Dicho esto concluimos esta parte teórica para dar paso a la parte práctica, poner en marcha la combinación Spark con el lenguaje R.

Para consultar el libro lo podemos hacer aquí.

Seguimos escribiendo sobre este tema en el siguiente post.

Miguel Araujo.


Javier Luraschi, Kevin Kuo, Edgar Ruiz. (2020). Mastering Spark with R. United States of America: O'Really Media Inc.

Comentarios

Entradas populares de este blog

REDATAM en Ubuntu (Linux)

 En un blog alterno, escribí sobre como migraba un "viejo" Intel i5 al sistema operativo Ubuntu en su versión más actual. Me comunique con mi gran colega Lenin de la CELADE en Chile, después de mucho tiempo, y le pedí me diera un pequeño resumen del "estado del arte" de REDATAM me dijo que todo marchaba bien, y pues ahora creo que tengo que actualizarme en contenedores pues el web server se encuentra ahí. Nos pusimos manos a la obra, el instalable desde la página no tiene ninguna extensión de archivo, asumí que era un ejecutable para Linux, no se si la página sufra ataques constantes ya que después quise volver a descargar sin éxito, la página estaba caida, sin embargo rescate el ejecutable anteriormente descargado. Últimamente primero hago y después documento, ya que con todo y mi compañero Deep,  no todo sale a la primera ni como lo dictan sus sugerencias, sobre todo en Linux y MacOS.  Por lo que, les muestro solo el resultado final de esta primera exploración, im...

El problema del gallo - otra vertiente de usar Python en RMarkdown con Posit RStudio

Cuando pensamos que ya se había cruzado el río, el buen gallo - mi amigo el Dany  Lara- no podía insertar código de Python  en un documento de RMarkdown  usando la versión de escritorio de Posit RStudio a pesar de las soluciones como instalar el Python y direccionarlo desde R con la biblioteca reticulate . Si bien se podía ejecutar código del interprete base, al querer correr usando módulos y con ello intentando instalar dichos módulos mandaba el siguiente mensaje: > py_install('matplotlib') Using virtual environment "D:/tu_usuario/Documents/.virtualenvs/r-reticulate" ... WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)'))': /simple/matplotlib/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) a...

RMarkdown - Python para usuarios de Posit RStudio

 Al escribir el post anterior pareciera que sería la misma lógica con la versión de escritorio de Posit RStudio , sin embargo al querer ejecutar un chunk de Python en un archivo de RMarkdown , manda que se tienen que actualizar los paquetes, descarga algunas cosas pero al final manda el siguiente mensaje: Show in New Window Error in system2(uv, c("python list", "--all-versions", "--color never", : '"C:\Users\mi_nombre_de_usuario\AppData\Local\R\cache\R\reticulate\uv\bin\uv.exe"' not found Error: Installation of Python not found, Python bindings not loaded. See the Python "Order of Discovery" here: https://rstudio.github.io/reticulate/articles/versions.html#order-of-discovery. La IA de Google aconseja  instalar uv pero el paquete reticulate no tiene ese método. Cuando se pensaba en instalar todo el que yo le llamo ecosistema del lenguaje de programación R se trató con esta última receta, descargar Python e instalarlo en una ...