El código en este repositorio utiliza PySpark para procesar archivos CSV que contienen registros de conexión entre hosts. El script verifica si hay nuevos archivos en una carpeta "logs/", para posteriormente procesarlos obteniendo respuesta a 3 preguntas:
- Lista de nombres de host conectados al host dado como parámetro durante la última hora
- Lista de nombres de host que recibieron conexiones desde un host dado como parámetro durante la última hora
- El nombre de host que generó la mayor cantidad de conexiones en la última hora.
al finalizar la ejecución, mueve los archivos procesados a la carpeta "processed_logs/"
- El codigó asumen que el script y el directorio de logs se encuentran en el mismo directorio. Asegúrese de ajustar las rutas en consecuencia.
- Es mejor utilizar un scheduler como crontab, airflow o incluso una función en la nube para programar este script en lugar de utilizar time.sleep(3600) que hará que el contenedor se ejecute de manera indefinida.
- El código anterior funciona mejor en una configuración de clúster. Debido a que el método collect trae todos los datos al nodo del controlador y para grandes conjuntos de datos puede causar problemas de memoria.
- Los datos de los logs proporcionados tienen fechas anteriores a la ultima hora actual por los cual no los va a tomar en cuenta a la hora de ejecutar las operaciones del script; Se deben ingresar logs con fechas actualizadas o cambiar las lineas 19-20 (solución 1), lines 8-9 (solución 2).
Se tiene dos soluciones en el repostiorio:
Define funciones para:
- get_last_hour_records: para filtrar las conexiones de la última hora
- parse_log: utiliza el esquema para leer el archivo CSV, filtra las conexiones de la última hora y genera los informes sobre las conexiones
Define funciones para:
- map_csv_data: mapea los datos del archivo CSV a una tupla de (tiempo de epoch, host1, host2)
- get_hosts_connections: obtener una lista de nombres de host conectados desde o hacia un host específico en la último hora
- get_most_connected_host: obtener el host que generó la mayor cantidad de conexiones en el último hora. }