Saltar al contenido principal
Crea una tabla a partir de archivos de HDFS. Esta función de tabla es similar a las funciones de tabla url y file.

Sintaxis

hdfs(URI, format, structure)

Argumentos

ArgumentoDescripción
URILa URI relativa del archivo en HDFS. La ruta del archivo admite los siguientes globs en modo de solo lectura: *, ?, {abc,def} y {N..M}, donde N y M son números, y 'abc' y 'def' son cadenas.
formatEl formato del archivo.
structureEstructura de la tabla. Formato: 'column1_name column1_type, column2_name column2_type, ...'.

Valor devuelto

Una tabla con la estructura especificada para leer o escribir datos en el archivo indicado. ejemplo Tabla de hdfs://hdfs1:9000/test y selección de sus dos primeras filas:
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 la ruta

Las rutas pueden usar globs. Los archivos deben coincidir con el patrón de la ruta completa, no solo con el sufijo o el prefijo.
  • * — Representa una cantidad arbitraria de caracteres, excepto /, incluida la cadena vacía.
  • ** — Representa todos los archivos dentro de una carpeta de forma recursiva.
  • ? — Representa un único carácter cualquiera.
  • {some_string,another_string,yet_another_one} — Sustituye cualquiera de las cadenas 'some_string', 'another_string', 'yet_another_one'. Las cadenas pueden contener el símbolo /.
  • {N..M} — Representa cualquier número >= N y <= M.
Las construcciones con {} son similares a las funciones de tabla remote y file. Ejemplo
  1. 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’
  1. Consulta la cantidad de filas de estos archivos:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
  1. Consulta cuántas filas hay en todos los archivos de estos dos directorios:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
Si la lista de archivos contiene rangos numéricos con ceros a la izquierda, use la construcción con llaves para cada dígito por separado o ?.
Ejemplo Consulte los datos de los archivos llamados file000, file001, … , file999:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')

Columnas virtuales

  • _path — Ruta del archivo. Tipo: LowCardinality(String).
  • _file — Nombre del archivo. Tipo: LowCardinality(String).
  • _size — Tamaño del archivo en bytes. Tipo: Nullable(UInt64). Si se desconoce el tamaño, el valor es NULL.
  • _time — Hora de la última modificación del archivo. Tipo: Nullable(DateTime). Si se desconoce la hora, el valor es NULL.

configuración use_hive_partitioning

Cuando use_hive_partitioning se establece en 1, ClickHouse detecta el particionado al estilo Hive en la ruta (/name=value/) y permite usar las columnas de partición como columnas virtuales en la consulta. Estas columnas virtuales tendrán los mismos nombres que en la ruta particionada. Ejemplo Usar una columna virtual creada con particionado al estilo Hive
SELECT * FROM HDFS('hdfs://hdfs1:9000/data/path/date=*/country=*/code=*/*.parquet') WHERE date > '2020-01-01' AND country = 'Netherlands' AND code = 42;

Configuración de almacenamiento

  • hdfs_truncate_on_insert - permite truncar el archivo antes de insertar datos en él. Deshabilitado de forma predeterminada.
  • hdfs_create_new_file_on_insert - permite crear un archivo nuevo en cada inserción si el formato incluye un sufijo. Deshabilitado de forma predeterminada.
  • hdfs_skip_empty_files - permite omitir archivos vacíos durante la lectura. Deshabilitado de forma predeterminada.
Última modificación el 10 de junio de 2026