Позволяет параллельно обрабатывать файлы из HDFS на множестве узлов в указанном кластере. На узле-инициаторе создаётся подключение со всеми узлами кластера, раскрываются звёздочки в пути к файлу HDFS, после чего каждый файл динамически распределяется. На узле-воркере запрашивается у инициатора следующая задача для обработки, и она обрабатывается. Это повторяется, пока не будут завершены все задачи.
Синтаксис
hdfsCluster(cluster_name, URI, format, structure)Аргументы
| Аргумент | Описание |
|---|---|
cluster_name |
Имя кластера, используемое для построения набора адресов и параметров подключения к удалённым и локальным серверам. |
URI |
URI файла или набора файлов. В режиме только для чтения поддерживаются следующие подстановочные шаблоны: *, **, ?, {'abc','def'} и {N..M}, где N, M — числа, abc, def — строки. Подробнее см. в разделе Подстановочные шаблоны в пути. |
format |
Формат файла. |
structure |
Структура таблицы. Формат: 'column1_name column1_type, column2_name column2_type, ...'. |
Возвращаемое значение
Таблица с указанной структурой для чтения данных из указанного файла.
Примеры
- Предположим, что у нас есть кластер 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'
- Выполните запрос, чтобы определить количество строк в этих файлах:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')- Выполните запрос, чтобы получить количество строк во всех файлах этих двух каталогов:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')