ClickHouse - Interroger des tables Iceberg et Delta Lake et ingérer des fichiers en continu
Découvrez comment interroger des tables Iceberg et Delta Lake stockées dans OVHcloud Object Storage depuis ClickHouse et charger les nouveaux fichiers en continu
Objectif
Si votre plateforme de données stocke des tables dans des formats ouverts comme Apache Iceberg ou Delta Lake dans un bucket OVHcloud Object Storage, ClickHouse peut les interroger sur place, sans les copier. ClickHouse peut aussi surveiller un bucket et charger automatiquement chaque nouveau fichier dans une table.
Ce guide explique comment interroger des tables Iceberg et Delta Lake, et comment ingérer des fichiers en continu avec le moteur S3Queue, depuis un cluster Public Cloud Analytics avec ClickHouse.
Prérequis
- Disposer d'un projet Public Cloud dans votre compte OVHcloud.
- Disposer d'un cluster ClickHouse en cours d'exécution sur OVHcloud Public Cloud et acceptant les connexions entrantes. Consultez les guides « Comment créer un cluster ClickHouse » et « Comment se connecter à un cluster ClickHouse ».
- Disposer du mot de passe de l'utilisateur
avnadmindu cluster ClickHouse. - Disposer d'un bucket OVHcloud Object Storage créé avec l'API compatible S31, et d'un utilisateur S3 ayant accès à ce bucket. Consultez les guides « Object Storage - Premiers pas » et « Object Storage - Gestion des identités et des accès ».
- Avoir lu le guide « ClickHouse - Interroger des fichiers stockés dans OVHcloud Object Storage » pour suivre les exemples : il explique comment construire l'URL des fichiers et comment enregistrer vos identifiants S3 dans une named collection.
En pratique
Avant de commencer - Bucket et utilisateur S3
- Créez le bucket avec l'API compatible S3.
- Vous pouvez activer le chiffrement côté serveur avec des clés gérées par OVHcloud (SSE-OMK) sur le bucket : il est transparent pour ClickHouse et pour les outils qui écrivent vos tables.
- Donnez à l'utilisateur S3 l'accès au bucket. Les outils qui écrivent des tables Iceberg et Delta Lake (par exemple PyIceberg ou delta-rs) ont besoin d'autres droits que la lecture et l'écriture d'objets, comme les envois en plusieurs parties. S'ils échouent avec
Access Denied, donnez à l'utilisateur S3 toutes les actions sur ce seul bucket :
Dans les exemples de moteurs de table IcebergS3 et DeltaLake ci-dessous, lake_s3 est une named collection qui pointe vers un dossier de votre bucket :
Interroger une table Iceberg
Indiquez l'URL du dossier de la table Iceberg (celui qui contient ses dossiers metadata et data) et vos clés S3 à la fonction de table icebergS3. ClickHouse lit la dernière version de la table et détecte son schéma :
Pour interroger la table régulièrement, créez une table avec le moteur IcebergS3 :
Utilisez les tables Iceberg en lecture seule depuis ClickHouse. L'écriture dans une table Iceberg depuis ClickHouse est une fonctionnalité bêta : elle est refusée par défaut et ne doit pas être activée. Continuez à écrire vos tables Iceberg avec les outils de votre plateforme de données.
ClickHouse lit la table directement dans son dossier du bucket. La connexion de ClickHouse à un catalogue Iceberg (moteur de base de données DataLakeCatalog) n'est pas disponible.
Interroger une table Delta Lake
Indiquez l'URL du dossier de la table Delta Lake (celui qui contient son dossier _delta_log) et vos clés S3 à la fonction de table deltaLakeS3, ou créez une table avec le moteur DeltaLake :
Ingérer de nouveaux fichiers en continu avec S3Queue
Le moteur S3Queue surveille un dossier de votre bucket et traite chaque nouveau fichier une seule fois. Associé à une vue matérialisée, il charge dans une table ClickHouse chaque fichier déposé dans le dossier, sans tâche externe.
-
Créez la table qui reçoit les données :
-
Créez la file d'attente sur le dossier à surveiller.
mode = 'unordered'traite les fichiers dans n'importe quel ordre, chacun une seule fois : -
Créez une vue matérialisée qui déplace les lignes de la file d'attente vers la table :
Désormais, chaque fichier CSV écrit dans le dossier queue est chargé automatiquement dans events :
Résolution des problèmes
Aller plus loin
- Documentation ClickHouse - fonctions de table iceberg
- Documentation ClickHouse - fonctions de table deltaLake
- Documentation ClickHouse - moteur de table S3Queue
- ClickHouse - Interroger des fichiers stockés dans OVHcloud Object Storage
Nous serions ravis de répondre à vos questions et apprécions tout retour que vous pourriez nous faire.
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Vous êtes sur Discord ? Rejoignez notre chaîne via https://discord.gg/ovhcloud et interagissez directement avec l'équipe qui développe notre service Analytics !
Rejoignez notre communauté d'utilisateurs.
1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.