Skip to content

Conventions

Juan Ignacio Hernández edited this page Sep 9, 2022 · 13 revisions

Introducción

En este apartado estableceremos las convenciones con el objetivo de establecer un marco de trabajo.

Primer Proyecto AirFlow

Estructura de archivos del proyecto

Se decidió adoptar la estructura de archivos utilizada por la plataforma Astronomer (más info: https://www.astronomer.io/guides/airflow-sql-tutorial/).

image

Se agrega a la estructura del proyecto:

  • Folder assets, donde irán archivos suplementarios que no produjimos nosotros, por ejemplo el .csv de codigo postal y ciudades.
  • Folder datasets, donde irán los .csv que transformamos con pandas.
  • Folder files, donde irán los .csv que son fiel imagen de lo que extrajimos de postgres.
  • Folder plugins\dynamic_dags , contiene archivos necesarios para el uso de los dynamic dags: - LETRAGRUPO_config_uni_nombre_de_universidad.yaml < archivo de configuración especifico de cada universidad - LETRAGRUPO_generators.py < archivo generador de los dags dinamicos - LETRAGRUPO_template.jinja2 < archivo jinja con el template de como se debe diseñar el dag

SQL

Estructura nombre archivos sql

LETRAGRUPO_uni_nombre_de_la_universidad.sql

Nombre columnas

  • university
  • career
  • inscription_date
  • first_name
  • last_name
  • gender
  • birth_date
  • age
  • postal_code
  • location
  • email

Nota: Se llenarán con NULLs aquellas columnas cuyos valores no se encuentren en la fuente de información.

DAGs

Estructura nombre archivos DAG

LETRAGRUPO_uni_nombre_de_la_universidad.py

Diseño

Para la tarea "Configurar un DAG, sin consultas, ni procesamiento", se debe diseñar el DAG.

Para esto definiremos funciones de Python vacías y utilizaremos PythonOperators que ejecutarán estas funciones para cumplir las tareas del DAG.

Se debe documentar que operators se utilizarán en el futuro para realizar dichas tareas.

Parámetros

  • Cantidad de retries: 5
  • Intervalo de retries: 5 segundos
  • Start date: (por definir)

Connections Parameters

  • postgres_conn_id = "db_universidades_postgres"
  • conexión a S3 = "universidades_S3"

Segundo Proyecto BigData

Estructura de archivos del proyecto

image

Descripción de cada carpeta:

  • Folder datasets: se encuentra el archivo .xml de _posts _en Stack.
  • Folder libs: se encuentra la librería chunckify.py. También iremos guardando todas las librerías personales que generemos, bajo el nombre: "LETRAGRUPO_nombre_librería.py"
  • Folder logs: contiene archivos .cfg para la configuraciones de logs de cada grupo de datos. Se guardan bajo el nombre: "LETRAGRUPO_logger.cfg".
  • Folder notebooks: contiene las Jupyter Notebooks donde se realizarán análisis más profundos y visualizaciones sobre los .csv de la carpeta output. Se genera un archivo .ipynb por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.ipynb", por ej: "D_top10_preguntas_mayor_actividad.ipynb".
  • Folder output: contiene los archivos .csv generados por los archivos .py de la carpeta src. Se genera un archivo .csv por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.csv", por ej: "D_top10_preguntas_mayor_actividad.csv".
  • Folder src: contiene los archivos fuente .py que ejecutarán la lógica MapReduce para procesar todos los grupos de datos, y cada uno de sus requerimientos. Se utiliza un archivo .py por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.py", por ej: "D_top10_preguntas_mayor_actividad.py".

Estructura de campos del archivo posts.xml

Extraído del archivo readme.txt que nos facilita Stack Overflow.

posts structure

Convenciones de configuración

  • Nivel mínimo de logueo: DEBUG
  • Número de loggers:
  • Número de handlers:
  • Número de formatters:

Clone this wiki locally