Saltar al contenido principal
EntradaSalidaAlias

Descripción

HiveText lee el formato de serialización de texto utilizado por las tablas de Apache Hive (el formato generado por LazySimpleSerDe de Hive). Es un formato de texto delimitado, similar a CSV, en el que los campos están separados por el delimitador predeterminado de Hive \x01 (Ctrl-A). El delimitador de campos se puede configurar mediante input_format_hive_text_fields_delimiter. HiveText es un formato solo de entrada. Los datos no tienen fila de encabezado: los valores se asignan por posición a las columnas de la tabla de destino, por lo que los nombres y tipos de las columnas se toman de la tabla (o de una estructura proporcionada explícitamente) en lugar de inferirse a partir de los datos. Durante la lectura, ClickHouse analiza fechas y horas en modo de máximo esfuerzo (consulte date_time_input_format), completa los campos finales omitidos con los valores predeterminados de las columnas y omite los campos que no reconoce. Dentro de un campo, los valores se analizan usando las mismas reglas de escape que CSV en lugar de los delimitadores anidados de Hive. En particular, una columna de tipo Array se lee a partir de la representación entre corchetes (por ejemplo, "['a','b','c']"), no a partir de valores separados por el delimitador de colección de Hive \x02.
La configuración de delimitadores anidados no tiene efectoLa configuración input_format_hive_text_collection_items_delimiter y input_format_hive_text_map_keys_delimiter se aceptan por compatibilidad, pero actualmente no se usan durante el análisis.
De forma predeterminada, se permite que las filas tengan un número variable de campos (consulte input_format_hive_text_allow_variable_number_of_columns): las filas con menos campos que la tabla completan las columnas faltantes con valores predeterminados, y en las filas con campos finales adicionales, esos campos extra se omiten.

Ejemplo de uso

Los ejemplos a continuación reemplazan el delimitador de campos predeterminado por una coma (,) mediante input_format_hive_text_fields_delimiter, para que los archivos de entrada sean más fáciles de leer.

Leer un archivo HiveText

Dado un archivo hive_data.txt con campos separados por comas:
hive_data.txt
1,3
3,5,9
Creamos una tabla que define los nombres de las columnas y sus tipos de datos, e insertamos el archivo en ella con FORMAT HiveText:
Query
CREATE TABLE test_tbl (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_tbl FROM INFILE 'hive_data.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_tbl;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 3 │ 0 │
│ 3 │ 5 │ 9 │
└───┴───┴───┘
Ten en cuenta que la primera fila, 1,3, solo tiene dos campos, por lo que la columna c faltante se rellena con su valor predeterminado 0.

Número variable de columnas

Con el valor predeterminado input_format_hive_text_allow_variable_number_of_columns = 1, las filas que tienen más campos que la tabla simplemente omiten los campos adicionales al final:
hive_extras.txt
1,2,3,4,5
6,7,8
Query
CREATE TABLE test_extras (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_extras FROM INFILE 'hive_extras.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_extras ORDER BY a;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 2 │ 3 │
│ 6 │ 7 │ 8 │
└───┴───┴───┘
En cambio, establecer input_format_hive_text_allow_variable_number_of_columns = 0 impone un número estricto de campos, y una fila con menos campos que la tabla provoca una excepción de análisis sintáctico.

Configuración de formato

ConfiguraciónDescripciónPredeterminado
input_format_hive_text_fields_delimiterDelimitador entre campos en Hive Text File\x01
input_format_hive_text_collection_items_delimiterDelimitador entre los elementos de una colección (array o map) en Hive Text File. Se acepta, pero actualmente no se usa al analizar.\x02
input_format_hive_text_map_keys_delimiterDelimitador entre una clave y su valor en map en Hive Text File. Se acepta, pero actualmente no se usa al analizar.\x03
input_format_hive_text_allow_variable_number_of_columnsIgnora las columnas adicionales en la entrada de Hive Text (si el archivo tiene más columnas de las esperadas) y trata los campos ausentes como valores predeterminados1
Última modificación el 25 de junio de 2026