ClickHouse - Interroger des fichiers stockés dans OVHcloud Object Storage
Découvrez comment lire, écrire et joindre des fichiers Parquet ou CSV stockés dans OVHcloud Object Storage depuis ClickHouse, sans exposer vos identifiants S3
Objectif
ClickHouse peut interroger des fichiers stockés dans un bucket compatible S31 sans les charger au préalable : vous pouvez les lire, y écrire le résultat d'une requête, les joindre à vos tables ou les charger dans une table. Vos données restent dans votre propre bucket OVHcloud Object Storage.
Ce guide explique comment interroger des fichiers stockés dans OVHcloud Object Storage depuis un cluster Public Cloud Analytics avec ClickHouse, et comment donner accès à ces fichiers à d'autres utilisateurs sans partager vos identifiants S3.
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, ou d'un utilisateur disposant des privilèges décrits dans ce guide. - Disposer d'un bucket OVHcloud Object Storage et d'un utilisateur S3 disposant d'un accès en lecture et en écriture à ce bucket, avec sa clé d'accès et sa clé secrète. Consultez les guides « Object Storage - Premiers pas » et « Object Storage - Gestion des identités et des accès ».
En pratique
Les exemples de ce guide sont des requêtes SQL. Vous pouvez les exécuter avec clickhouse-client ou en HTTPS, comme décrit dans le guide « Comment se connecter à un cluster ClickHouse ».
Étape 1 - Construire l'URL de vos fichiers
ClickHouse désigne un fichier par l'URL du point de terminaison du bucket, suivie du nom du bucket et du chemin du fichier (URL de type path-style) :
<region>est la région de votre bucket en minuscules, par exemplegraoueu-west-par. Le point de terminaison de chaque région est indiqué dans le guide « Object Storage - Endpoints et géo-disponibilité ».<bucket>est le nom de votre bucket.<chemin>/<fichier>est la clé de l'objet, par exemplesales/2026/orders.parquet.
L'URL doit commencer par https://. Sans ce préfixe, ClickHouse renvoie l'erreur Host is empty in S3 URI.
Étape 2 - Enregistrer vos identifiants S3 dans une named collection
Vous pourriez écrire votre clé d'accès et votre clé secrète dans chaque requête, mais elles apparaîtraient alors dans vos scripts et dans l'historique des requêtes. Enregistrez-les plutôt une fois dans une named collection : ClickHouse les conserve chiffrées et ne les affiche jamais.
Connecté en tant que avnadmin, exécutez :
Les valeurs sont masquées lorsque vous listez les named collections :
Dans les étapes suivantes, filename est le chemin du fichier relatif à l'url de la collection.
Une named collection utilisée par une table ne peut pas être supprimée. Supprimez ou modifiez d'abord la table.
Étape 3 - Lire des fichiers
Lisez un fichier Parquet avec la fonction de table s3 :
La structure des fichiers Parquet est détectée automatiquement.
La fonction de table s3 accepte aussi l'URL complète du fichier, la clé d'accès, la clé secrète et le format. Pour les fichiers CSV avec une ligne d'en-tête, utilisez le format CSVWithNames :
Pour lire plusieurs fichiers à la fois, utilisez un caractère générique (*) dans le chemin. La colonne virtuelle _file indique le fichier d'où provient chaque ligne :
Étape 4 - Créer une table sur vos fichiers
Pour interroger régulièrement les mêmes fichiers, créez une table avec le moteur S3. Les données restent dans votre bucket et sont lues à chaque requête :
Étape 5 - Joindre des fichiers à vos tables, ou les charger
Vous pouvez joindre des fichiers aux tables de votre cluster dans une même requête :
Pour charger le contenu de fichiers dans une table de votre cluster, utilisez INSERT … SELECT :
Étape 6 - Exporter le résultat d'une requête vers votre bucket
Écrivez le résultat d'une requête dans un fichier avec INSERT INTO FUNCTION :
Pour remplacer un fichier existant, ajoutez SETTINGS s3_truncate_on_insert = 1 à la fin de la requête.
Étape 7 - Donner accès aux fichiers à d'autres utilisateurs
Connecté en tant que avnadmin, accordez aux autres utilisateurs les droits nécessaires en SQL. Pour un utilisateur qui lit seulement les fichiers via la named collection ovh_bucket, sans connaître les identifiants S3 :
READ ON S3autorise la lecture depuis S3.NAMED COLLECTION ON ovh_bucketautorise l'utilisation de la named collection, sans en voir les valeurs.CREATE TEMPORARY TABLEest nécessaire pour utiliser la fonction de tables3.SELECTsur la base est nécessaire pour interroger les tables créées avec le moteurS3.
Résolution des problèmes
Aller plus loin
- Documentation ClickHouse - fonction de table s3
- Documentation ClickHouse - moteur de table S3
- Documentation ClickHouse - Named collections
- Capacités et limitations de Public Cloud Analytics avec ClickHouse
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.