Coder Social home page Coder Social logo

meluiscruz / technical_test_for_seguritech Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 46 KB

En este repositorio encontrarás el desarrollo de una prueba técnica para una empresa de Seguridad Informàtica (Seguritech). El objetivo es utilizar Jupyter Notebooks y PySpark para hacer limpieza, organización y consulta de una muestra de datos.

License: MIT License

Jupyter Notebook 100.00%
pyspark python jupyter-notebook bigdata spark tech-interviews

technical_test_for_seguritech's Introduction

Desarrollo de la prueba técnica para Seguritech

Metricas del proyecto

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.

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.

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.

¿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.

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

technical_test_for_seguritech's People

Contributors

meluiscruz avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.