apache-airflow-providers-clickhousedb connecte Airflow à ClickHouse, ce qui vous permet d’exécuter des requêtes, de créer des tables et de charger des données dans le cadre d’un DAG. Il se connecte via l’interface HTTP à l’aide du client clickhouse-connect, et expose ClickHouse via le framework SQL commun d’Airflow, de sorte que l’opérateur standard SQLExecuteQueryOperator gère les requêtes DDL, DML et analytiques, sans nécessiter d’opérateur spécifique à ClickHouse.
Installer le provider
apache-airflow-providers-common-sql et de clickhouse-connect, qui sont installés en même temps que lui. Pour transmettre les résultats de la requête à des DataFrames pandas ou polars, installez les extras facultatifs :
Créer une connexion à ClickHouse
clickhouse. Créez une connexion depuis l’UI d’Airflow, dans Admin > Connections, ou définissez-en une via la CLI ou une variable d’environnement.
Dans l’UI, sélectionnez ClickHouse comme type de connexion et renseignez les champs suivants :
Pour ClickHouse Cloud ou tout cluster auto-hébergé avec TLS activé, définissez
secure sur true dans le champ Extra et utilisez le port TLS (8443).
Options de connexion supplémentaires
extra. Elles sont toutes facultatives :
Définir une connexion sans l’UI
clickhouse_default, sauf si vous en indiquez un autre.
Exécuter des requêtes avec SQLExecuteQueryOperator
conn_id de l’opérateur sur votre connexion à ClickHouse. Le DAG suivant crée une table, y insère des lignes, les relit, puis supprime la table :
handler par défaut (fetch_all_handler). Pour renvoyer autre chose que l’ensemble complet des résultats, transmettez un autre handler, par exemple fetch_one_handler pour récupérer uniquement la première ligne.
Utiliser une base de données différente pour chaque tâche
hook_params au lieu de créer une connexion distincte :
Utiliser directement le hook
ClickHouseHook dans une tâche Python.
La méthode bulk_insert_rows du hook utilise le mécanisme d’insertion colonnaire natif de clickhouse-connect, bien plus rapide que les insertions ligne par ligne pour de grands jeux de données. Définissez batch_size afin de limiter le pic de mémoire sur des entrées très volumineuses :
get_client() pour accéder au client clickhouse-connect sous-jacent afin de gérer tout ce que le hook n’expose pas directement :
Appliquer les paramètres de session
hook_params d’un opérateur. Les paramètres transmis au constructeur sont fusionnés avec les session_settings définis dans le champ Extra de la connexion, et les valeurs du constructeur prévalent en cas de conflit de clés :