web-dev-qa-db-fra.com

Apache Airflow ou Apache Beam pour le traitement de données et la planification de travaux

J'essaie de donner des informations utiles mais je suis loin d'être un ingénieur en informatique.

J'utilise actuellement les pandas de la bibliothèque python pour exécuter une longue série de transformations de mes données comportant de nombreuses entrées (fichiers CSV et Excel actuellement). Les sorties sont plusieurs fichiers Excel. J'aimerais pouvoir exécuter des travaux par lots surveillés planifiés avec calcul parallèle (je veux dire, pas aussi séquentiels que ce que je fais avec des pandas), une fois par mois.

Je ne connais pas vraiment Beam ou Airflow, j’ai rapidement lu la documentation et il semble que les deux puissent y parvenir. Lequel devrais-je utiliser? 

7
LouisB

Apache Airflow n'est pas un moteur de traitement de données. 

Airflow is a platform to programmatically author, schedule, and monitor workflows.

Cloud Dataflow est un service entièrement géré sur Google Cloud qui peut être utilisé pour le traitement des données. Vous pouvez écrire votre code de flux de données, puis utiliser airflow pour planifier et surveiller le travail de flux de données. Airflow vous permet également de relancer votre travail en cas d'échec (le nombre de tentatives est configurable). Vous pouvez également configurer dans Airfow si vous souhaitez envoyer des alertes sur Slack ou Email si votre pipeline de flux de données échoue.

2
kaxil

Les autres réponses sont assez techniques et difficiles à comprendre. J'étais dans votre position auparavant alors je vais expliquer en termes simples.

Le flux d'air peut faire n'importe quoi. Il a BashOperator et PythonOperator qui signifie qu’il peut exécuter n’importe quel script bash ou n’importe quel script Python.
C’est un moyen d’organiser (configurer des DAG de pipeline de données complexes), de planifier, de surveiller, de déclencher la réexécution de pipelines de données, dans une interface utilisateur conviviale.
En outre, il est facile à installer et tout est en code Python bien connu.
Faire des pipelines de manière organisée (c’est-à-dire en utilisant Airflow) signifie que vous ne perdez pas de temps à déboguer un fouillis de scripts de traitement de données partout.

Apache Beam est un wrapper pour les nombreux frameworks de traitement de données (Spark, Flink, etc.).
L'intention est que vous venez d'apprendre Beam et que vous puissiez exécuter plusieurs backends (coureurs Beam).
Si vous connaissez Keras et TensorFlow/Theano/Torch, la relation entre Keras et ses moteurs est similaire à celle entre Beam et ses traitements de données.

Le flux de données Cloud de Google Cloud Platform est l'un des principaux outils d'exécution de Beam. Ils l'appellent le coureur de flux de données ( https://beam.Apache.org/documentation/runners/dataflow/ )

La dernière offre de GCP, Cloud Composer, est une implémentation gérée d'Airflow en tant que service.

Donc vous pouvez soit:
- appel manuel à l'implémentation Airflow Beam
- Implémentation manuelle d'Airflow, traitement des données sur l'instance elle-même (si vos données sont petites (ou si votre instance est suffisamment puissante), vous pouvez traiter les données sur la machine sur laquelle Airflow est exécuté. C'est pourquoi beaucoup sont confus si Airflow peut traiter des données )
- Gérer les appels appelant Airflow en tant que service (Cloud Composer) dans Cloud Dataflow 

Mon expérience personnelle:
Airflow est léger et facile à maîtriser (facile à mettre en œuvre), vous devez l’utiliser autant que possible pour vos pipelines de données.
En outre, comme de nombreuses entreprises recherchent de l'expérience dans l'utilisation d'Airflow, si vous souhaitez devenir ingénieur en informatique, vous devriez probablement l'apprendre. 

14
cryanbhu