Ir al contenido principal

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

Posit Cloud - como instalar librerías de Python en el entorno de R

 Ahora que estamos tomando una maestría buscando que siga "girando la ardilla" por unos años más en la materia de "Cómputo Estadístico" nos ha sugerido usar la versión gratuita de Posit en la nube. En su página definen este producto como "es una solución basada en la nube que permite acceder al poderoso conjunto de herramientas de ciencia de datos de Posit directamente en el navegador web  - sin requerir instalación o configuraciones complejas". Para los usuarios que han utilizado Posit RStudio en primera instancia verán el entorno muy similar a Posit Cloud con algunas pequeñas diferencias, para empezar necesitamos un usuario o contraseña aunque es posible autenticarse usando alguna cuenta existente como es el caso de Google. Con el tiempo y trabajando en desarrollo de software, vamos entendiendo que quizás el nombre queda muy grande a los pequeños ejemplos, pero es muy recomendable el uso de proyectos siempre. A continuación vemos el entorno Posit Clo...

La librería openxlsx

En el Instituto se utiliza como herramienta de trabajo institucional la suite de ofimática MS Office que ofrece un precio asequible aunque lo actual en el mundo del software es el esquema de suscripciones el que casi se ha convertido en el común de las empresas gigantes de las tecnologías de la información. Es por ello que si bien en un principio que se usaban las bibliotecas XLConnectJars   y XLConnect, al tratar de bajarlas e instalarlas se descubrió - en aquel entonces - que estaban obsoletas. Es por ello que se volteo a la que revisaremos superficialmente en este artículo. Lo primero como siempre es descargar la librería openxlsx que se puede hacer desde el mismo Posit RStudio. Vamos a recrear un cuadro existente en el sitio del Instituto que debido a la crisis sanitaria iniciada en 2020 cobra una relevancia muy importante: "Las principales causas de muerte" que de forma anecdótica   fue la primera aplicación en la cual me pidieron que participara, un programa escri...

R 4.5 vs R 4.4.3

Cuando comparto con mis colegas, sobre todo de trabajo que es mi nicho profesional, acerca de porque tener las últimas versiones del software y que replico sobre todo por dos vertientes: mejor desempeño y funcionalidad del software, y la seguridad que pareciera que las empresas de software recomiendan los mismo o algo cercano a esto. Por ejemplo, veamos lo que nos dice Oracle (dueño de Java) acerca de su versión 8 del Java SE.   En la tabla de la página de Oracle podemos observar las fechas en los cuales ya no habrá soporte para ciertas versiones de Java. En este breve artículo veremos en el caso del interprete de R como se desempeña en una versión con respecto a la más reciente. Los puestos de trabajo que se registran por los patrones en el IMSS ha sido una cifra que muestra el avance o retroceso de como se encuentra el empleo en nuestro país, en este caso diremos que en el sector formal. Los microdatos oscilan arriba de los 20 millones y para su procesamiento es necesario o divi...