4.3 KiB
machine_translated |
---|
true |
HDFS
Ce moteur fournit l'intégration avec Apache Hadoop l'écosystème en permettant de gérer les données sur HDFSvia ClickHouse. Ce moteur est similaire à l' Fichier et URL moteurs, mais fournit des fonctionnalités spécifiques Hadoop.
Utilisation
ENGINE = HDFS(URI, format)
Le URI
paramètre est L'URI du fichier entier dans HDFS.
Le format
paramètre spécifie l'un des formats de fichier disponibles. Effectuer
SELECT
requêtes, le format doit être pris en charge pour l'entrée, et à effectuer
INSERT
queries – for output. The available formats are listed in the
Format section.
Le chemin le cadre de URI
peut contenir des globules. Dans ce cas, le tableau serait en lecture seule.
Exemple:
1. Configurer le hdfs_engine_table
table:
CREATE TABLE hdfs_engine_table (name String, value UInt32) ENGINE=HDFS('hdfs://hdfs1:9000/other_storage', 'TSV')
2. Remplir le fichier:
INSERT INTO hdfs_engine_table VALUES ('one', 1), ('two', 2), ('three', 3)
3. Interroger les données:
SELECT * FROM hdfs_engine_table LIMIT 2
┌─name─┬─value─┐
│ one │ 1 │
│ two │ 2 │
└──────┴───────┘
Détails De Mise En Œuvre
- Les lectures et les écritures peuvent être parallèles
- Pas pris en charge:
ALTER
etSELECT...SAMPLE
opérations.- Index.
- Réplication.
Globs dans le chemin
Plusieurs composants de chemin peuvent avoir des globs. Pour être traité, le fichier devrait exister et correspondre au modèle de chemin entier. Liste des fichiers détermine pendant SELECT
(pas à l' CREATE
moment).
*
— Substitutes any number of any characters except/
y compris la chaîne vide.?
— Substitutes any single character.{some_string,another_string,yet_another_one}
— Substitutes any of strings'some_string', 'another_string', 'yet_another_one'
.{N..M}
— Substitutes any number in range from N to M including both borders.
Les Constructions avec {}
sont similaires à l' distant table de fonction.
Exemple
- Supposons que nous ayons plusieurs fichiers au format TSV avec les URI suivants 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’
- Il y a plusieurs façons de faire une table composée des six fichiers:
CREATE TABLE table_with_range (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV')
Une autre façon:
CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_?', 'TSV')
Table se compose de tous les fichiers dans les deux répertoires (tous les fichiers doivent satisfaire le format et le schéma décrits dans la requête):
CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV')
!!! warning "Avertissement"
Si la liste des fichiers contient des plages de nombres avec des zéros en tête, utilisez la construction avec des accolades pour chaque chiffre séparément ou utilisez ?
.
Exemple
Créer une table avec des fichiers nommés file000
, file001
, … , file999
:
CREARE TABLE big_table (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV')
Les Colonnes Virtuelles
_path
— Path to the file._file
— Name of the file.
Voir Aussi