Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
Hdfs
Crea una tabla a partir de archivos en HDFS. Esta función de tabla es similar a URL y file aquel.
hdfs(URI, format, structure)
Parámetros de entrada
URI
— The relative URI to the file in HDFS. Path to file support following globs in readonly mode:*
,?
,{abc,def}
y{N..M}
dondeN
,M
— numbers, `'abc', 'def'
— strings.format
— The formato del archivo.structure
— Structure of the table. Format'column1_name column1_type, column2_name column2_type, ...'
.
Valor devuelto
Una tabla con la estructura especificada para leer o escribir datos en el archivo especificado.
Ejemplo
Tabla de hdfs://hdfs1:9000/test
y selección de las dos primeras filas de ella:
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 en el camino
Múltiples componentes de ruta de acceso pueden tener globs. Para ser procesado, el archivo debe existir y coincidir con todo el patrón de ruta (no solo el sufijo o el prefijo).
*
— Substitutes any number of any characters except/
incluyendo cadena vacía.?
— 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.
Construcciones con {}
son similares a la función de tabla remota).
Ejemplo
- Supongamos que tenemos varios archivos con los siguientes URI en 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’
- Consulta la cantidad de filas en estos archivos:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
- Consulta la cantidad de filas en todos los archivos de estos dos directorios:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
Advertencia
Si su lista de archivos contiene rangos de números con ceros a la izquierda, use la construcción con llaves para cada dígito por separado o use ?
.
Ejemplo
Consultar los datos desde archivos nombrados file000
, file001
, … , file999
:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')
Virtual Columnas
_path
— Path to the file._file
— Name of the file.
Ver también