hdfs 

Crée une table à partir de fichiers dans HDFS. Cette fonction de table est similaire à URL et fichier ceux.

hdfs(URI, format, structure)

Les paramètres d'entrée

  • URI — The relative URI to the file in HDFS. Path to file support following globs in readonly mode: *, ?, {abc,def} et {N..M}N, M — numbers, `'abc', 'def' — strings.
  • format — The format de le fichier.
  • structure — Structure of the table. Format 'column1_name column1_type, column2_name column2_type, ...'.

Valeur renvoyée

Une table avec la structure spécifiée pour lire ou écrire des données dans le fichier spécifié.

Exemple

Table de hdfs://hdfs1:9000/test et la sélection des deux premières lignes de ce:

SELECT *
FROM hdfs('hdfs://hdfs1:9000/test', 'TSV', 'column1 UInt32, column2 UInt32, column3 UInt32')
LIMIT 2
┌─column1─┬─column2─┬─column3─┐
│       1 │       2 │       3 │
│       3 │       2 │       1 │
└─────────┴─────────┴─────────┘

Globs dans le chemin

Plusieurs composants de chemin peuvent avoir des globs. Pour être traité, le fichier doit exister et correspondre à l'ensemble du modèle de chemin (pas seulement le suffixe ou le préfixe).

  • * — 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' fonction de table à distance).

Exemple

  1. Supposons que nous ayons plusieurs fichiers 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’
  1. Interroger la quantité de lignes dans ces fichiers:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
  1. Requête de la quantité de lignes dans tous les fichiers de ces deux répertoires:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')

Exemple

Interroger les données des fichiers nommés file000, file001, … , file999:

SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')

Les Colonnes Virtuelles 

  • _path — Path to the file.
  • _file — Name of the file.

Voir Aussi

Article Original

Rating: 5 - 1 votes

Was this content helpful?
★★★★★