- docker
- python 3.12
- uv
- zip
En el directorio del proyecto:
docker-compose -f airflow/docker-compose.yaml up -d
- Admin
- Connections -> New Connection
- Connection Id: spark
- Host: spark://spark
- Port: 7077
- Extra:
{"deploy-mode": "client"}
- Ejecutar el dag
spark_package_upload
- Actualizar este archivo con la metadata soportada por el proyecto
- Actualizar este archivo con el dato a procesar
- Ejecutar el DAG
data_flow_engineen Airflow.
En el directorio del proyecto:
cd engineuv run pytest unit/tests
En el directorio del proyecto:
cd engine- Modificar la versión en el archivo pyproject.toml
. scripts/build_package.sh- Actualizar el archivo upload_dependencies.py con la nueva versión (líneas 20 y 21)
- Ejecutar el dag
spark_package_upload - Actualizar el parámetro
py_filesdel SparkSubmitOperator en el archivo data_flow_engine.py con la nueva versión (línea 63)
- Airflow:
http://localhost:8080/ - Spark:
http://localhost:8070/ - Kafka:
http://localhost:8090/topics - Hadoop:
http://localhost:9870/
Es posible que la primera ejecución Docker tarde más de 60 segundos en descargar y construir las imágenes. Se puede resolver levantando los contenedores manualmente una vez con cualquiera de estos comandos:
docker-compose -f hadoop/docker-compose.yaml
docker-compose -f engine/docker-compose.yaml
docker-compose -f kafka/docker-compose.yaml
También se puede aumentar el tiempo de sleep en el comando que ejecuta Airflow en el propio DAG, en las líneas 41, 45 y 54 de este archivo
Es posible que todos los servicios al mismo tiempo consuman más memoria de la permitida y los contenedores se
interrumpan por un OOM.
Para resolver esto, en el dashboard de Docker:
Ajustes -> Resources -> Advanced e incrementar el valor de Memory limit.
He desarrollado el proyecto con un Macbook Pro M3 (arquitectura arm) con lo que para poder ejecutar el proyecto en
arquitectura amd64 hay que actualizar la línea 19 de este archivo y
reemplazar ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-arm64/ por
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/