Honor a quien honor merece (o lucha de titanes)

Uno de mis compañeros de trabajo me mandó un correo donde me ofrecía su apoyo para mejorar los tiempos usando R con Spark.

Como dije en el anterior artículo con el lenguaje R llevaré casi 2 años y en el caso de Spark solamente unos cuantos meses, sin embargo este comentario hizo que me pusiera manos a la obra y aprovechando que me asignaron una nueva computadora de escritorio con muy buen poder de cómputo realice nuevamente pruebas de desempeño con tiempos increíbles para Spark.

Una breve descripción de la arquitectura es la siguiente:

Marca y Modelo: DELL Optiplex 9020

Procesador: Intel CORE i5 a 3.5 GHz

Memoria RAM: 16GB



Estamos por hacer una capacitación a personal que se ha contratado por lo que aprovechando el nuevo equipo hice videos a propósito donde se muestra como instalar R, Markdown y Spark, para ello utilice las versiones más recientes.

Aparte modifiqué el código para que Spark utilice más memoria RAM que la que se asigna por default como se muestra a continuación. 

config <- spark_config()

config$`sparklyr.shell.driver-memory` <- "16G"

config$spark.memory.fractions <- 0.7

Lo mismo hice con el equipo HP ajustando la memoria RAM a 8G, donde pudo cargar el archivo pero al realizar las consultas marcó un error por lo que volví a dejar los valores por default.

Al momento que estamos escribiendo este artículo (marzo 2021) estás son las versiones más recientes del software inherente al paquete Spark.

Versión de R: 4.0.4

Versión de RTools: 4.0

Versión IDE RStudio: 1.4.1106

Versión de Java (JRE):  1.8.0_281

Versión de Spark - Hadoop: 2.4.3

Una vez terminado la instalación procedí a correr el script para hacer el cruce (o pequeño cuadro) para medir el tiempo procesamiento, y pues como dije es increíble.


Primero cargamos el archivo CSV a un dataset de Spark que es la operación que lleva más tiempo.

En este caso casi 8 minutos para la carga.


Para hacer justicia agregué una cifra que faltaba para replicar el cuadro tal como sale en Oracle y las 2 versiones de REDATAM. Sin embargo andar cambiando de tecnología provoca que te olvides de otras con las cuales ya había trabajado como es el caso de R, y es que tenía que agregar un renglón con el total de ambos sexos, hombres y mujeres.

Afortunadamente parece ser que cada vez hay más referencia al lengauje R con lo cual no me costó trabajo el tema que estaba buscando[1] que en palabras llanas es crear un dataframe igual al ya creado (tabla) y luego hacer un rbind. Aquí el código:


Con eso el nuevo renglón se agrega al final, como se puede ver el archivo csv no es muy estético pero se trataba de sacar las cifras.

Con esta nuevo cálculo el proceso tardó como podemos ver exactamente ¡1 minuto !. Dejo aquí el código completo.


Redatam +SP Versión 5

En este caso no hay cambio solo se hace con este nuevo equipo y como mencioné la vez pasada lo hago cronometro en mano y se obtuvo en 1:06 minutos.


Es por ello que este artículo merece el título de "Lucha de titanes" solo 6 segundos de diferencia.

Redatam Red 7

Nuevamente se hace el mismo cruce con esta configuración de hardware, dando un tiempo de 1:17 minutos.


He de mencionar que conté con el apoyo del buen Lenin Aguinaga ya que estaba marcando un error a la hora de la ejecución, ya en en el sitio de descargas de REDATAM está depositada la instalación correcta.

Oracle 12c Hexadata

Solo como anécdota, debido a la descompostura de mi equipo desktop perdí la consulta PLSQL aunque afortunadamente si recordé la instrucción ya que la captura que hice en el anterior artículo solo mostraba parcialmente la misma, espero documentar en mi olvidado blog de AlejandriaTics la consulta que hice con PIVOT además que ahora si la mostraré completa y no parcial como en el post anterior.


El resultado en tiempo de la anterior consulta es 1:36 minutos ejecutada de forma remota vía VPN en una máquina de escritorio dentro de la red del Instituto.

Conclusiones.

Con este segundo ejercicio podemos observar que a mayor poder de cómputo Spark se desempeña de mejor manera aunque las otras 3 tecnologías responden más rápido con esta misma configuración de equipo.
Con esta nueva prueba se confirma mi teoría anterior referente a que Spark podía ser más rápido inclusive que Oracle aunque todavía hay muchas cosas que analizar como lo es la seguridad, facilidad de uso, complejidad y otros aspectos que no he tocado aquí.

Estadística: Puestos de trabajo registrados ante el IMSS 2016.

Consulta: Cruce de mes de registro del puesto de trabajo contra sexo de la persona que ocupa el puesto de trabajo.

Número de registros o tuplas: 220, 816,117

Equipo donde se ejecutaron los procesos:

Desktop DELL Optiplex 9020  Intel CORE i5 a 3.5 GHz RAM 16GB 

 

Software

Entorno de ejecución

Duración del proceso

R con Spark

Standalone

60 segundos

Redatam +SP V5

Standalone 66 segundos

Redatam 7

Standalone

77 segundos

Oracle 12c

Acceso VPN ejecución en el Instituto

96 segundos

Una de las cosas que será interesante es que Oracle tiene módulos tanto para trabajar con R y Spark para seguir haciendo estos análisis, así también la prueba de usar R conectando la base de datos de Oracle y usando Spark.

Como podemos  ver todavía hay mucho campo para la investigación a propósito del tema. Nos leemos en el siguiente post.

Atte.

Miguel Araujo.  

Referencias:

[1] C.A. Huamaní, DATA FRAME: Creación, Selección y Acoplamiento de Variables y elementos, RPubs by RStudio, Accesed in: March 30,2021 Available: https://rpubs.com/Cesar_AHN/data_frame_crear_seleccion_de_elementos_variables_columnas_filas_agregar

Comentarios

Entradas populares de este blog

Librería de REDATAM para R

Conectar bases de datos Oracle con R vía JDBC

Red 7 Admin