Pular para o conteúdo principal
EntradaSaídaAlias

Descrição

HiveText lê o formato de serialização de texto usado pelas tabelas do Apache Hive (o formato gerado pelo LazySimpleSerDe do Hive). É um formato de texto delimitado, semelhante ao CSV, em que os campos são separados pelo delimitador padrão do Hive \x01 (Ctrl-A). O delimitador de campos pode ser configurado por meio de input_format_hive_text_fields_delimiter. HiveText é um formato apenas de entrada. Os dados não têm linha de cabeçalho: os valores são mapeados por posição para as colunas da tabela de destino, portanto os nomes e tipos das colunas são obtidos da tabela (ou de uma estrutura fornecida explicitamente), em vez de serem inferidos a partir dos dados. Durante a leitura, o ClickHouse analisa datas e horas no modo best effort (consulte date_time_input_format), preenche campos finais omitidos com os valores padrão das colunas e ignora campos que não reconhece. Dentro de um campo, os valores são analisados usando as mesmas regras de escape do CSV, em vez dos delimitadores aninhados do Hive. Em particular, uma coluna do tipo Array é lida a partir da representação entre colchetes (por exemplo, "['a','b','c']"), e não de valores separados pelo delimitador de coleção do Hive \x02.
As configurações de delimitadores aninhados não têm efeitoAs configurações input_format_hive_text_collection_items_delimiter e input_format_hive_text_map_keys_delimiter são aceitas por compatibilidade, mas atualmente não são usadas durante a análise.
Por padrão, as linhas podem ter um número variável de campos (consulte input_format_hive_text_allow_variable_number_of_columns): linhas com menos campos do que a tabela têm as colunas ausentes preenchidas com valores padrão, e linhas com campos extras no final têm esses campos extras ignorados.

Exemplo de uso

Os exemplos abaixo substituem o delimitador de campos padrão por uma vírgula (,) usando input_format_hive_text_fields_delimiter, para facilitar a leitura dos arquivos de entrada.

Leitura de um arquivo HiveText

Dado o arquivo hive_data.txt, com campos separados por vírgulas:
hive_data.txt
1,3
3,5,9
Criamos uma tabela que define os nomes e os tipos das colunas e inserimos nela o arquivo com 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 │
└───┴───┴───┘
Observe que a primeira linha, 1,3, tem apenas dois campos, então a coluna ausente c é preenchida com o valor padrão 0.

Número variável de colunas

Com o padrão input_format_hive_text_allow_variable_number_of_columns = 1, as linhas que têm mais campos do que a tabela simplesmente têm os campos adicionais ao final ignorados:
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 │
└───┴───┴───┘
Em vez disso, definir input_format_hive_text_allow_variable_number_of_columns = 0 impõe uma contagem estrita de campos, e uma linha com menos campos do que a tabela gera uma exceção de análise.

Configurações de formato

ConfiguraçãoDescriçãoPadrão
input_format_hive_text_fields_delimiterDelimitador entre campos no Hive Text File\x01
input_format_hive_text_collection_items_delimiterDelimitador entre itens de coleção (array ou map) no Hive Text File. É aceito, mas atualmente não é usado durante a análise.\x02
input_format_hive_text_map_keys_delimiterDelimitador entre um par de chave/valor de map no Hive Text File. É aceito, mas atualmente não é usado durante a análise.\x03
input_format_hive_text_allow_variable_number_of_columnsIgnora colunas extras na entrada Hive Text (se o arquivo tiver mais colunas do que o esperado) e trata campos ausentes como valores padrão1
Última modificação em 25 de junho de 2026