TL;DRUn guide pratique pour interroger des tables de data lake, les accélérer avec MergeTree et réécrire les résultats dans Iceberg. Toutes les étapes utilisent des jeux de données publics et fonctionnent aussi bien sur Cloud que sur OSS.
1
Interroger directement des données Iceberg
Le moyen le plus rapide pour démarrer consiste à utiliser la table functionicebergS3() : pointez-la vers une table Iceberg dans S3 et lancez immédiatement une query, sans aucune configuration préalable.Inspectez le schéma :deltaLake(), hudi() et paimon().Pour en savoir plus : Interroger directement les formats de table ouverts couvre les quatre formats, les variantes de cluster pour les lectures distribuées et les options de backend de stockage (S3, Azure, HDFS, local).2
Créer une table persistante avec le moteur de table Iceberg
Pour éviter d’avoir à spécifier le chemin à chaque fois, créez une table à l’aide du moteur de table Iceberg. Les données restent dans S3 — aucune donnée n’est dupliquée :3
Se connecter à un catalogue
La plupart des organisations gèrent les tables Iceberg via un catalogue de données afin de centraliser les métadonnées des tables et la découverte des données. ClickHouse permet de se connecter à votre catalogue à l’aide du moteur de base de donnéesDataLakeCatalog, qui expose toutes les tables du catalogue sous forme de base de données ClickHouse. Il s’agit de l’approche la plus évolutive : ainsi, à mesure que de nouvelles tables Iceberg sont créées, elles restent accessibles dans ClickHouse sans configuration supplémentaire.Voici un exemple de connexion à AWS Glue :Les accents graves sont obligatoires autour de
<database>.<table>, car ClickHouse ne prend pas nativement en charge plusieurs espaces de noms.4
Exécuter une requête
Quelle que soit la méthode utilisée ci-dessus — fonction de table, moteur de table ou catalogue — le même SQL ClickHouse fonctionne dans tous les cas :FROM change. Toutes les fonctions, jointures et agrégations de ClickHouse SQL fonctionnent de la même façon, quelle que soit la source de données.5
Charger un sous-ensemble dans ClickHouse
Interroger Iceberg directement est pratique, mais les performances restent limitées par le débit du réseau et l’organisation des fichiers. Pour les charges de travail analytiques, chargez les données dans une table MergeTree native.Commencez par exécuter une requête filtrée sur la table Iceberg afin d’établir une référence :counterid — prévoyez plusieurs secondes d’exécution.Créez maintenant une table MergeTree et chargez les données :counterid est la première colonne de la clé ORDER BY, l’index primaire sparse de ClickHouse saute directement aux granules pertinentes et ne lit que les lignes correspondant à counterid = 38, au lieu de parcourir l’ensemble des 100 millions de lignes. Le résultat est un gain de vitesse spectaculaire.Le guide accélérer l’analytique va plus loin avec les types LowCardinality, les index de texte intégral et des clés de tri optimisées, en montrant une amélioration d’environ 40x sur un jeu de données de 283 millions de lignes.Pour en savoir plus : Accélérer l’analytique avec MergeTree couvre l’optimisation du schéma, l’indexation en texte intégral et une comparaison complète des performances avant/après.6
Écrire à nouveau dans Iceberg
ClickHouse peut également écrire des données dans des tables Iceberg, ce qui permet des workflows ETL inversés — publier des résultats agrégés ou des sous-ensembles pour qu’ils soient exploités par d’autres outils (Spark, Trino, DuckDB, etc.).Créez une table Iceberg de sortie :Étapes suivantes
- Interroger directement — Les quatre formats, les variantes de cluster, les moteurs de table, la mise en cache
- Se connecter aux catalogues — Guide complet de Unity Catalog avec Delta et Iceberg
- Accélérer l’analytique — Optimisation du schéma, indexation, démo avec une accélération d’environ 40x
- Écrire dans les lacs de données — Écritures brutes, écritures agrégées, correspondance de types
- Matrice de compatibilité — Comparaison des fonctionnalités entre les formats et les backends de stockage