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.
Vous utilisez déjà le
airflow-clickhouse-plugin communautaire ? Il repose sur un driver, un protocole et un port différents. Suivez le
guide de migration pour transférer vos DAG et connexions existants vers le provider.Installer le provider
Installez le provider dans l’environnement où s’exécutent le scheduler Airflow et les workers :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
Le provider enregistre un type de connexionclickhouse. 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
Le provider expose des options supplémentaires sous forme de champs dédiés dans le formulaire de connexion. Si vous définissez la connexion via un URI, du JSON ou une variable d’environnement, indiquez-les plutôt comme clés dans l’objet JSONextra. Elles sont toutes facultatives :
Définir une connexion sans l’UI
Configurez la connexion à l’aide d’une variable d’environnement. Le format URI inclut l’hôte, les identifiants et la base de données :clickhouse_default, sauf si vous en indiquez un autre.
Exécuter des requêtes avec SQLExecuteQueryOperator
Définissez leconn_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
Lorsqu’une connexion pointe vers un cluster et que certaines tâches interrogent différentes bases de données, remplacez la base de données viahook_params au lieu de créer une connexion distincte :
Utiliser directement le hook
Pour les opérations qui ne se prêtent pas à un opérateur SQL — insertions en masse, streaming ou appels client propres à ClickHouse — utilisezClickHouseHook 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
Transmettez des paramètres de session lors de l’initialisation du hook, soit directement, soit via lehook_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 :