2

Uso de Jupyter Notebook como herramienta de diseño de Big Data

1. Contexto.

¿Sabias que los cuadernos de Jupyter, en combinación con frameworks como PySpark, también pueden ser una herramienta potente para la consulta, acondicionamiento, persistencia y diseño de scripts de Big Data?.

AVISO: Este tutorial es mucho más texto que visualizaciónes. Sin embargo, cabe recordar que si la calidad de los datos no es la adecuada (insumos), la calidad de las visualizaciones no será la esperada (productos).


El siguiente tutorial es un ejemplo de cómo aplicar Jupyter Notebooks y PySpark en una consulta de métricas estadísticas de un dataset de información de seguridad informática. Puedes ver el Notebook >>>>>AQUI<<<<<

2. Interpretación de los requerimientos.

Los requerimientos listados en problemStatement.pdf sugieren un acercamiento deductivo y serializado. En otras palabras, no se puede avanzar al siguiente objetivo sin antes haber reuelto los anteriores.

El primer y segundo requerimiento expresan que el dataset debe ser acondicionado para poder desplegar los metadatos propios de un string en formato JSON.

El tercer requerimiento consiste en presentar dos medidas de estadística descriptiva (media y desviación estandar) de tres metadatos, esto es para todas las columnas.

Por último, se requiere presentar las mismas medidas para los mismos metadatos, solo que ahora hay una condición de filtrado implicita, que obliga al desarrollador a tratar con las expresiones más profundas y elementales del esquema JSON.


3. Estrategia de resolución.

La estrategia se puede resumir en 3 etapas consecutivas y ordenadas:

  1. Acondicionamiento y carga del dataset.
  2. Creación de RDDs y DataFrames de manera deductiva.
  3. Presentación de resultados.


Estas etapas están subdivididas en 9 secciones, mismas que están comentadas en el archivo source_code.ipynb:

  1. Definimos la cabecera del proyecto.
  2. Declaramos la ruta del dataset (que es una copia destilada del archivo original).
  3. Leemos el archivo para crear el primer cleanMolochDataRDD.
  4. Creamos un DF (DF_Moloch) a partir del RDD del paso anterior.
  5. Creamos un RDD (RDD_OnlyJsonData) que contenga solo las strings en formato JSON
  6. Creamos el DF (onlyJsonData_DF) a partir del RDD de strings en formato JSON.
  7. Declaramos el DF srcIP_DF a partir del DF onlyJsonData_DF.
  8. Declaramos el DF groupByProtocol_DF a partir del DF onlyJsonData_DF.
  9. Hacemos un filtro del DF por jerarquía de protocolos.

4. Tabla de contenido.

  • /data_sources: Directorio que contiene el archivo de trabajo (dataSyntheticMoloch.csv). Este dierectorio tambien contiene un cuaderno de pruebas para la limpieza del dataset (cleaning_dataset.ipynb) y una copia del dataset original (clean_dataSyntheticMoloch.csv).
  • problemStatement.pdf: Archivo pdf donde se especifican los requerimientos del proyecto.
  • source_code.ipynb: Es el cuaderno (Jupyter Notebook) donde está el desarrollo de la prueba técnica.

5. ¿Qué está pendiente por desarrollar?

  • La versión en inglés del Jupyter Notebook principal.
  • Un script/cuaderno mejor definido para la automatización de la limpieza del archivo csv original.
  • La versión en inglés del README.md.

6. Información técnica

Este proyecto fue elaborado con el siguiente stack:

  • Jupyter Notebook / ipython 7.12.0
  • Python 3.7.9
  • Spark v2.4.7
  • Ubuntu 20.04.2 LTS

7. Fuentes y enlaces externos.

  1. Introducciòn a PySpark
  2. Curso de Fundamentos de Spark para Big Data
  3. Artículo de Big Data
  4. Prueba Técnica para Seguritech
Escribe tu comentario
+ 2