Перейти к основному содержанию
Позволяет параллельно обрабатывать файлы из HDFS на множестве узлов в указанном кластере. На узле-инициаторе создаётся подключение со всеми узлами кластера, раскрываются звёздочки в пути к файлу HDFS, после чего каждый файл динамически распределяется. На узле-воркере запрашивается у инициатора следующая задача для обработки, и она обрабатывается. Это повторяется, пока не будут завершены все задачи.

Синтаксис

hdfsCluster(cluster_name, URI, format, structure)

Аргументы

АргументОписание
cluster_nameИмя кластера, используемое для построения набора адресов и параметров подключения к удалённым и локальным серверам.
URIURI файла или набора файлов. В режиме только для чтения поддерживаются следующие подстановочные шаблоны: *, **, ?, {'abc','def'} и {N..M}, где N, M — числа, abc, def — строки. Подробнее см. в разделе Подстановочные шаблоны в пути.
formatФормат файла.
structureСтруктура таблицы. Формат: 'column1_name column1_type, column2_name column2_type, ...'.

Возвращаемое значение

Таблица с указанной структурой для чтения данных из указанного файла.

Примеры

  1. Предположим, что у нас есть кластер ClickHouse с именем cluster_simple и несколько файлов со следующими URI в 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. Выполните запрос, чтобы определить количество строк в этих файлах:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
  1. Выполните запрос, чтобы получить количество строк во всех файлах этих двух каталогов:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
Если в списке файлов есть диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или символ ?.
Последнее изменение 10 июня 2026 г.