Permet de traiter en parallèle des fichiers HDFS depuis de nombreux nœuds d’un cluster spécifié. Sur le nœud initiateur, cela crée une connexion à tous les nœuds du cluster, développe les astérisques dans le chemin de fichier HDFS et attribue dynamiquement chaque fichier. Sur le nœud worker, celui-ci demande à l’initiateur la tâche suivante à traiter, puis la traite. Cette opération se répète jusqu’à ce que toutes les tâches soient terminées.
Syntaxe
hdfsCluster(cluster_name, URI, format, structure)Arguments
| Argument | Description |
|---|---|
cluster_name |
Nom d'un cluster servant à construire un ensemble d'adresses et de paramètres de connexion pour les serveurs distants et locaux. |
URI |
URI d'un fichier ou d'un ensemble de fichiers. Prend en charge les caractères génériques suivants en mode readonly : *, **, ?, {'abc','def'} et {N..M}, où N et M sont des nombres, abc et def des chaînes. Pour plus d'informations, voir Wildcards In Path. |
format |
Le format du fichier. |
structure |
Structure de la table. Format 'column1_name column1_type, column2_name column2_type, ...'. |
Valeur renvoyée
Une table ayant la structure spécifiée pour lire les données du fichier spécifié.
Exemples
- Supposons que nous ayons un cluster ClickHouse nommé
cluster_simple, ainsi que plusieurs fichiers avec les URI suivantes sur HDFS :
- 'hdfs://hdfs1:9000/some_dir/some_file_1'
- 'hdfs://hdfs1:9000/some_dir/some_file_2'
- 'hdfs://hdfs1:9000/some_dir/some_file_3'
- 'hdfs://hdfs1:9000/another_dir/some_file_1'
- 'hdfs://hdfs1:9000/another_dir/some_file_2'
- 'hdfs://hdfs1:9000/another_dir/some_file_3'
- Exécutez une requête pour obtenir le nombre de lignes dans ces fichiers :
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')- Exécutez une requête pour obtenir le nombre de lignes dans tous les fichiers de ces deux répertoires :
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')