lunes, 5 de abril de 2021

REDATAM saca el pecho con su versión X

El jueves publiqué el artículo referente a los tiempos de las herramientas informáticas para la explotación de datos donde se concluye que con una computadora con más poder de procesamiento R usando Spark es quien obtuvo el menor tiempo para el cruce en este estudio. El viernes santo recibí un correo electrónico de Lenin Aguinaga donde aparte de darme su opinión sobre la comparación en cuestión, nos compartía una primicia, un regalo de pascuas.

La verdad me he sentido muy halagado y honrado ante tal gentileza de nuestro amigo de Chile, ya que esta versión aun no se ha dado la luz en los sitios oficiales de la CEPAL/CELADE.

Así que el día de hoy sin más preámbulos me puse a instalar esta nueva versión alfa de REDATAM X donde después de algunos tumbos que me ayudo a resolver Lenin, hicimos la prueba del mismo cruce quedando nuevamente sorprendido de la velocidad de nuestra querida herramienta. ¡¡22 segundos!!


Como dije es una versión preliminar por ello los datos se presentan en forma exponencial además que en algunas ocasiones la aplicación abortaba pero lo importante es que sorprendentemente superó a Apache Spark.

jueves, 1 de abril de 2021

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.

jueves, 11 de marzo de 2021

Las odiosas comparaciones

Seguimos con el tema de los grandes conjuntos de datos y ahora hacemos unas pruebas de rendimiento en cuanto a consultas básicas, vamos a hacer un cruce entre mes de registro del puesto de trabajo y sexo de la persona que lo ocupa.

Base de datos Oracle Hexadata 12c

 Después de haber importado los archivos de texto con los datos de los puestos de trabajo para crear la base de datos de Oracle se procedió a hacer consultas para ver los tiempos de respuesta, para ello se utilizó una consulta usando el PIVOT del PLSQL de Oracle y se utilizó la VPN para realizarla desde home-office.

El resultado de esta consulta fue de 3:19 minutos.

lunes, 1 de marzo de 2021

¡ Grande, REDATAM !

 “La importancia de no claudicar”.

Quizás en anteriores artículos he mencionado – quizás no – la buena y grata impresión que causó en nosotros, la gente de México, del Instituto, la actualización, para algunos y la presentación para otros del software REDATAM en el año 2003.

Nuestros compañeros de Chile durante varios días nos mostraron las bondades de este software y el curso en general recuerdo que tenía 2 vertientes, el enfoque desde el usuario y el enfoque desde el desarrollador.

Han pasado poco más de 17 años y entre pausas y olvidos en mi caso, la herramienta siempre me ha parecido muy propicia debido a las múltiples ventajas contra algunos inconvenientes que considero son salvables.

Antes de que se claudicara con la generación de las estadísticas de cultura procesamos unos 3 años de resultados utilizando REDATAM y en el pasado más inmediato lo usamos para los tabulados del módulo de CIBERACOSO así como algunas otras encuestas ya utilizando la versión 7.

En mi segundo intento con REDATAM publiqué algunos artículos cuando probé la nueva versión en la parte de CREATE para los formatos CSV, FoxPro y CSPro.

Sin embargo en mi anterior área aparte de generar resultados nos empezaron a pedir calcular las precisiones estadísticas y entre que los proyectos nos empezaron a asfixiar por el tiempo, la subdirección migró a R para este fin, quedando pendiente una charla – pregunta con Lenin Aguinaga sobre este tema.

Ahora y debido a un cambio laboral “he vuelto a casa” es decir a los registros administrativos donde ya no trabajamos con muestras sino con universos completos por lo que creo que REDATAM vuelve a ser otra muy buena opción, de hecho hay un antecedente en el cual mi compañero y mentor Pedro Reyna empezó a crear bases de datos REDATAM para las estadísticas vitales.

miércoles, 27 de enero de 2021

Los conteos de registros con dplyr con condiciones

Seguimos con esta serie de artículos que tiene el propósito de apoyar a personas que como yo inician en el mundo de R y de alguna manera a la ciencia de datos, así como para mi es una especie de cuaderno de notas digital.

El archivo con el que ejemplificó está en el sitio de INEGI y es la información de registros administrativos referentes a la estadística de mortalidad, en este caso específico para el año 2019.

Una gran amiga doctora, me consultó sobre como obtener causas de muerte de menores de edad con estos datos.

Una vez que descargamos el archivo lo que tenemos que hacer es crear el código en R para abrir este archivo en formato CSV usando Spark.

Para lo cual usamos las siguientes instrucciones:

library(sparklyr)

library(dplyr)


config <- spark_config()

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

config$spark.memory.fractions <- 0.7

sc <- spark_connect(master="local", config = config)

defun19 <- spark_read_csv(sc, name = "defun19",                                      path="D:/EjemplosR/defun19/conjunto_de_datos_defunciones_registradas_2019.CSV",                        delimiter=",", header = TRUE, overwrite = TRUE)

martes, 17 de noviembre de 2020

Paquete dplyr de R, quizás el sql de los matemáticos

 En los primeros cursos de R, me llamaba la atención de como utilizar herramientas para las consultas a los datos, algún símil de lo que hace SQL, o lo que se hace usando los menús de SPSS, STATA o REDATAM.

En mi anterior área donde hay más informáticos que matemáticos lo que hacíamos era que el motor dejara los conjuntos de datos listos para que R procesara - en nuestro caso - los cálculos usando el paquete estadístico survey ya que estábamos en el ámbito de las encuestas.

En este caso donde la mayoría de mis compañeros son matemáticos, R es el estandarte y en estos días de aprendizaje no lo hace nada mal.

Una de las cosas por las que me fui en esta ocasión por R es tratar de ponerme al corriente con mis compañeros porque bien lo pude haber hecho en otro lenguaje o motor de base de datos pero es necesario ya conocer o hacer lo que puedo con otras herramientas, ahora con R.



jueves, 5 de noviembre de 2020

Spark para conectar con bases de datos vía JDBC

 En mis primeras andadas en lo referente al paquete sparklyr, para este tema en especial, lo que se pretende es usar la librería de JDBC para que este sea el medio de conexión y ese conjunto de datos (dataset) que se extrae, sea manipulado por Spark con todas las ventajas que tiene el paquete como ya lo he descrito en los artículos anteriores.

Me base en tres posts que vienen la final de este artículo.

En primera instancia utilice el conector JDBC para Oracle (ojdbc7.jar) y pues funcionó sin problemas, vamos con la fórmula.

1- Se cargan las librerías.

library("sparklyr")

library("RJDBC")

2- Se carga la configuración de Spark, para después agregar la ruta y nombre del conector JDBC.

## Spark

config <- spark_config()

## Tell config location of oracle jar

config[["sparklyr.jars.default"]] <- "ruta/ojdbc7.jar"



3 - Se crea la conexión, indicándole nuestra variable de configuración.

connspark <- spark_connect(master="local", config = config)