"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > IA > Automatisation l'importation de CSV à PostgreSQL à l'aide de flux d'air et de docker

Automatisation l'importation de CSV à PostgreSQL à l'aide de flux d'air et de docker

Publié le 2025-04-12
Parcourir:649

Ce didacticiel montre la création d'un pipeline de données robuste à l'aide d'Apache Airflow, Docker et PostgreSQL pour automatiser le transfert de données des fichiers CSV vers une base de données. Nous couvrirons les concepts de flux d'air de base comme les Dags, les tâches et les opérateurs pour une gestion efficace du flux de travail.

Ce projet présente la création d'un pipeline de données fiable qui lit les données CSV et les écrit dans une base de données PostgreSQL. Nous intégrerons divers composants de flux d'air pour assurer une gestion efficace des données et maintenir l'intégrité des données.

Objectifs d'apprentissage:

  • Grasp Core Apache Airflow Concepts: Dags, Tâches et Opérateurs.
  • Configurez et configurez le flux d'air APache avec Docker pour l'automatisation du flux de travail.
  • Intégrer PostgreSQL pour la gestion des données dans les pipelines Airflow.
  • Master Reading CSV Files et automatiser l'insertion de données dans une base de données PostgreSQL.
  • construire et déployer des pipelines de données évolutives et efficaces à l'aide de flux d'air et de docker.

prérequis:

  • Docker Desktop, vs code, docker compose
  • Compréhension de base des conteneurs et commandes Docker
  • Commandes Linux de base
  • connaissance de base python
  • Expérience de la construction d'images docker de dockerfiles et à l'aide de docker composé

Qu'est-ce que APACHE AirFlow?

Apache AirFlow (AirFlow) est une plate-forme pour les flux de travail, de planification, de surveillance et de surveillance des workflows. La définition des workflows en tant que code améliore la maintenabilité, le contrôle des versions, les tests et la collaboration. Son interface utilisateur simplifie la visualisation des pipelines, la surveillance des progrès et le dépannage.

Automating CSV to PostgreSQL Ingestion with Airflow and Docker

Terminologie AirFlow:

  • Workflow: un processus étape par étape pour atteindre un objectif (par exemple, cuire un gâteau).
  • dag (graphique acyclique réalisé): Un plan de workflow affichant les dépendances de tâche et l'ordre d'exécution. C'est une représentation visuelle du flux de travail. Automating CSV to PostgreSQL Ingestion with Airflow and Docker
  • tâche: une seule action dans un workflow (par exemple, mélange des ingrédients).
  • Opérateurs: Construire des blocs de tâches, définissant des actions comme exécuter des scripts Python ou exécuter SQL. Les opérateurs clés incluent pythonoperator , dummyoperator , et postgreOperator .
  • xcoms (inter-communications): Activer les tâches pour communiquer et partager des données.
  • Connexions: Gérer les informations d'identification pour se connecter aux systèmes externes (par exemple, bases de données).

Configuration du flux d'air apache avec docker et dockerfile:

Utiliser Docker assure un environnement cohérent et reproductible. Un dockerfile automatise la création d'images. Les instructions suivantes doivent être enregistrées comme dockerfile (pas d'extension):

FROM apache/airflow:2.9.1-python3.9
USER root
COPY requirements.txt /requirements.txt
RUN pip3 install --upgrade pip && pip3 install --no-cache-dir -r /requirements.txt
RUN pip3 install apache-airflow-providers-apache-spark apache-airflow-providers-amazon
RUN apt-get update && apt-get install -y gcc python3-dev openjdk-17-jdk && apt-get clean

Ce dockerfile utilise une image officielle de flux d'air, installe les dépendances à partir de exigences.txt , et installe les fournisseurs d'air nécessaires (des exemples Spark et AWS sont affichés; vous pouvez en avoir besoin d'autres).

Configuration du docker:

docker-compose.yml orchestre les conteneurs docker. La configuration suivante définit les services pour le serveur Web, le planificateur, le déclencher, le CLI, l'initial et le postgresql. Remarquez l'utilisation de la section x-aairflow-common pour les paramètres partagés et la connexion à la base de données PostgreSQL. (Le complet docker-compose.yml est trop long pour inclure ici mais les sections clés sont affichées ci-dessus).

Configuration et exécution du projet:

  1. Créer un répertoire de projet.
  2. Ajoutez le dockerfile et docker-compose.yml fichiers.
  3. crée exigences.txt Listing des packages Python nécessaires (par exemple, pandas).
  4. exécuter docker-compose up -d pour démarrer les conteneurs.
  5. accéder à la UI du flux d'air à http: // localhost: 8080 .
  6. Créez une connexion postgresql dans le flux d'air UI (en utilisant write_to_psql comme id de connexion).
  7. Créez un exemple de fichier input.csv .

Fonction Dag et Python:

Le flux d'air dag ( sample.py ) définit le workflow:

  • a postgreSoperator crée la table de base de données.
  • a pythonoperator ( generate_insert_queries ) lit le CSV et génère des instructions sql insert , les sauvant à dags / sql / insert_queries.sql .
  • un autre
  • postgreSoperator exécute le sql généré.
(Le code complet

sample.py est trop long pour inclure ici mais les sections de clés sont affichées ci-dessus).

Conclusion:

Ce projet démontre un pipeline de données complet à l'aide d'Airflow, Docker et PostgreSQL. Il met en évidence les avantages de l'automatisation et l'utilisation de Docker pour les environnements reproductibles. L'utilisation des opérateurs et la structure DAG sont essentielles à une gestion efficace du flux de travail.

(Les sections restantes, y compris FAQs et GitHub Repo, sont omises pour la concision. Ils sont présents dans l'entrée d'origine.)

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3