> For the complete documentation index, see [llms.txt](https://cleyrop.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cleyrop.gitbook.io/docs/projet-data-and-ia/dataflow/creer-un-dataflow/choisir-le-bon-type-de-dataflow.md).

# Choisir le bon type de Dataflow

Lors de la création d’un Dataflow, vous devez choisir son type d’exécution : Spark ou Python.

Ce choix est essentiel car il détermine les langages disponibles, le mode de traitement des données, et la manière dont les datasets sont lus et produits.

<table data-card-size="large" data-view="cards"><thead><tr><th>Type</th><th>Usage principal</th><th>Langages</th><th>Entrée /Sortie requise</th><th>Performance</th></tr></thead><tbody><tr><td>SPARK</td><td>ETL / traitement distribué</td><td>PySpark, SQL, Low Code</td><td>Python (Polars / Pandas)</td><td>Haute (cluster distribué)</td></tr><tr><td>PYTHON</td><td>Automatisation / collecte / scripts légers</td><td>Python (Polars)</td><td>Non</td><td>Moyenne (exécution locale ou multiproc)</td></tr></tbody></table>

***

## Dataflow Spark

Les Dataflows Spark sont conçus pour les traitements distribués et le traitement de données structurées à grande échelle.

Ils utilisent un cluster Spark composé d’un driver et de plusieurs exécuteurs pour paralléliser les calculs.

#### Quand l’utiliser

* Vous travaillez sur des datasets volumineux (plusieurs Go à To).
* Vous avez besoin de jointures, agrégations ou transformations complexes.
* Vous souhaitez chaîner plusieurs étapes de traitement avec des sorties structurées.
* Vous voulez bénéficier du mode Low Code ou du SQL Spark.

#### Langages disponibles

* **PySpark** : transformations distribuées en Python.
* **SQL** : requêtes Spark SQL exécutées sur le cluster.
* **Low Code** : interface visuelle de transformation (join, filter, group, etc.).
* Le liste des librairies utilisées est disponible au niveau du Cluster

#### Datasets

* Dataset d’entrée requis (vous partez d’une ou plusieurs sources existantes).
* Dataset de sortie obligatoire (chaque transformation Spark en produit un).

#### Exemple

```python
voitures = cleyrop_datasets["projet.voitures"]
voitures_modifiees = voitures.with_column("prix", voitures["prix"] * 1.2)
return voitures_modifiees
```

## Dataflow Python

Les Dataflows Python sont plus flexibles et légers.

Ils permettent de combiner du code Python libre, des appels d’API, des automatisations, ou des traitements non distribués.

#### Quand l’utiliser

* Vous devez récupérer ou transformer des données externes (API, S3, fichiers).
* Vous effectuez des traitements métiers ou automatisations.
* Vous travaillez sur des volumes légers ou non structurés.
* Vous ne souhaitez pas nécessairement produire un dataset structuré.

#### Langages et librairies

* Python standard compatible avec Polars (recommandé)
* Le liste des librairies utilisées est disponible au niveau du Cluster

#### Datasets

* Dataset d’entrée optionnel (vous pouvez démarrer sans dataset existant).
* Dataset de sortie optionnel (certaines transformations ne produisent pas de données structurées).

#### Exemple

```python
import requests, polars as pl

response = requests.get("https://api.exemple.com/data").json()
df = pl.DataFrame(response).lazy()
return df
```

***

## Bonnes pratiques

* Choisissez Spark si vos traitements manipulent des données structurées et volumineuses.
* Choisissez Python si vos traitements sont orientés automatisation, intégration ou orchestration.
* Ne mélangez pas les deux types dans une même logique métier : préférez plusieurs Dataflows dédiés reliés entre eux.
* Documentez le but du Dataflow dès la création pour faciliter sa maintenance et sa reprise.
