Pular para o conteúdo principal
Este motor fornece integração com o ecossistema Apache Hadoop, permitindo gerenciar dados no HDFS via ClickHouse. Este motor é semelhante aos motores File e URL, mas oferece recursos específicos do Hadoop. Esse recurso não conta com suporte dos engenheiros do ClickHouse e sua qualidade é reconhecidamente duvidosa. Se tiver algum problema, corrija por conta própria e envie um pull request.

Uso

Parâmetros do motor
  • URI - URI completa do arquivo no HDFS. A parte do caminho da URI pode conter globs. Nesse caso, a tabela fica em modo somente leitura.
  • format - especifica um dos formatos de arquivo disponíveis. Para executar consultas SELECT, o formato deve ser compatível com entrada e, para executar consultas INSERT – com saída. Os formatos disponíveis estão listados na seção Formatos.
  • [PARTITION BY expr]

PARTITION BY

PARTITION BY — Opcional. Na maioria dos casos, você não precisa de uma chave de partição e, quando ela for necessária, em geral também não precisa ser mais granular do que por mês. O particionamento não acelera as consultas (ao contrário da expressão ORDER BY). Você nunca deve usar um particionamento granular demais. Não particione seus dados por identificadores ou nomes de clientes (em vez disso, use o identificador ou nome do cliente como a primeira coluna na expressão ORDER BY). Para particionar por mês, use a expressão toYYYYMM(date_column), em que date_column é uma coluna com uma data do tipo Date. Os nomes das partições aqui têm o formato "YYYYMM". Exemplo: 1. Configure a tabela hdfs_engine_table:
2. Preencha o arquivo:
3. Consulte os dados:

Detalhes de implementação

  • Leituras e escritas podem ser paralelas.
  • Não há suporte a:
    • operações ALTER e SELECT...SAMPLE.
    • Índices.
    • A replicação zero-copy é possível, mas não recomendada.
A replicação zero-copy não está pronta para produçãoA replicação zero-copy é desativada por padrão no ClickHouse 22.8 e versões posteriores. Este recurso não é recomendado para uso em produção.
Globs no caminho Vários componentes do caminho podem ter globs. Para ser processado, o arquivo deve existir e corresponder ao padrão do caminho completo. A listagem dos arquivos ocorre durante SELECT (não no momento de CREATE).
  • * — Corresponde a qualquer quantidade de caracteres, exceto /, incluindo a string vazia.
  • ? — Corresponde a qualquer caractere único.
  • {some_string,another_string,yet_another_one} — Corresponde a qualquer uma das strings 'some_string', 'another_string', 'yet_another_one'.
  • {N..M} — Corresponde a qualquer número no intervalo de N a M, incluindo ambos os limites.
As construções com {} são semelhantes à função de tabela remote. Exemplo
  1. Suponha que temos vários arquivos no formato TSV com os seguintes URIs no 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’
  2. Há várias maneiras de criar uma tabela composta pelos seis arquivos:
Outra maneira:
A tabela é composta por todos os arquivos em ambos os diretórios (todos os arquivos devem atender ao formato e ao esquema descritos na consulta):
Se a listagem de arquivos contiver intervalos numéricos com zeros à esquerda, use a sintaxe com chaves para cada dígito separadamente ou use ?.
Exemplo Crie uma tabela com arquivos nomeados file000, file001, … , file999:

Configuração

Assim como o GraphiteMergeTree, o mecanismo HDFS oferece suporte a configuração estendida usando o arquivo de configuração do ClickHouse. Há duas chaves de configuração que você pode usar: global (hdfs) e no nível do usuário (hdfs_*). A configuração global é aplicada primeiro e, em seguida, a configuração no nível do usuário é aplicada (se existir).

Opções de configuração

Suportado por libhdfs3

A referência de configuração do HDFS pode explicar alguns parâmetros.

Extras do ClickHouse

Limitações

  • hadoop_security_kerberos_ticket_cache_path e libhdfs3_conf só podem ser globais, não específicos por usuário

Suporte ao Kerberos

Se o parâmetro hadoop_security_authentication tiver o valor kerberos, o ClickHouse será autenticado via Kerberos. Os parâmetros estão aqui, e hadoop_security_kerberos_ticket_cache_path pode ser útil. Observe que, devido a limitações do libhdfs3, apenas a abordagem antiga é compatível; as comunicações com o datanode não são protegidas por SASL (HADOOP_SECURE_DN_USER é um indicador confiável dessa abordagem de segurança). Use tests/integration/test_storage_kerberized_hdfs/hdfs_configs/bootstrap.sh como referência. Se hadoop_kerberos_keytab, hadoop_kerberos_principal ou hadoop_security_kerberos_ticket_cache_path forem especificados, a autenticação via Kerberos será usada. Nesse caso, hadoop_kerberos_keytab e hadoop_kerberos_principal são obrigatórios.

Suporte a HA do NameNode do HDFS

O libhdfs3 oferece suporte a HA do NameNode do HDFS.
  • Copie hdfs-site.xml de um nó do HDFS para /etc/clickhouse-server/.
  • Adicione o trecho a seguir ao arquivo de configuração do ClickHouse:
  • Em seguida, use o valor da tag dfs.nameservices em hdfs-site.xml como o endereço do namenode no URI do HDFS. Por exemplo, substitua hdfs://appadmin@192.168.101.11:8020/abc/ por hdfs://appadmin@my_nameservice/abc/.

Colunas virtuais

  • _path — Caminho do arquivo. Tipo: LowCardinality(String).
  • _file — Nome do arquivo. Tipo: LowCardinality(String).
  • _size — Tamanho do arquivo em bytes. Tipo: Nullable(UInt64). Se o tamanho for desconhecido, o valor será NULL.
  • _time — Hora da última modificação do arquivo. Tipo: Nullable(DateTime). Se a hora for desconhecida, o valor será NULL.

Configurações de armazenamento

Veja também
Última modificação em 29 de junho de 2026