Permite processar arquivos do HDFS em paralelo a partir de vários nós em um cluster especificado. No iniciador, cria uma conexão com todos os nós do cluster, expande os asteriscos no caminho do arquivo HDFS e distribui cada arquivo dinamicamente. No nó worker, consulta o iniciador sobre a próxima tarefa a ser processada e a executa. Isso se repete até que todas as tarefas sejam concluídas.
Sintaxe
hdfsCluster(cluster_name, URI, format, structure)Argumentos
| Argumento | Descrição |
|---|---|
cluster_name |
Nome de um cluster usado para montar um conjunto de endereços e parâmetros de conexão para servidores remotos e locais. |
URI |
URI de um arquivo ou de um conjunto de arquivos. Suporta os seguintes caracteres curinga no modo somente leitura: *, **, ?, {'abc','def'} e {N..M}, em que N, M — números; abc, def — strings. Para mais informações, consulte Caracteres curinga no caminho. |
format |
O formato do arquivo. |
structure |
Estrutura da tabela. Formato: 'column1_name column1_type, column2_name column2_type, ...'. |
Valor retornado
Uma tabela com a estrutura especificada para ler dados do arquivo especificado.
Exemplos
- Suponha que temos um cluster do ClickHouse chamado
cluster_simplee vários arquivos 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'
- Consulte o número de linhas nesses arquivos:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')- Consulte a quantidade de linhas em todos os arquivos desses dois diretórios:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')