Табличная функция fileCluster
Позволяет одновременно обрабатывать файлы, соответствующие заданному пути, на нескольких узлах кластера. Инициатор устанавливает соединения с рабочими узлами, разворачивает glob-шаблоны в пути к файлам и делегирует задачи чтения файлов рабочим узлам. Каждый рабочий узел запрашивает у инициатора следующий файл для обработки и повторяет это до тех пор, пока все задачи не будут выполнены (все файлы не будут прочитаны).
Эта функция будет работать корректно только в том случае, если набор файлов, соответствующих изначально указанному пути, идентичен на всех узлах, а их содержимое совпадает на разных узлах.
Если эти файлы различаются между узлами, возвращаемое значение нельзя заранее предсказать, так как оно зависит от порядка, в котором рабочие узлы запрашивают задачи у инициатора.
Синтаксис
Аргументы
| Аргумент | Описание |
|---|---|
cluster_name | Имя кластера, которое используется для формирования набора адресов и параметров подключения к удалённым и локальным серверам. |
path | Относительный путь к файлу относительно user_files_path. Путь к файлу также поддерживает globs. |
format | Формат файлов. Тип: String. |
structure | Структура таблицы в формате 'UserID UInt64, Name String'. Определяет имена и типы столбцов. Тип: String. |
compression_method | Метод сжатия. Поддерживаемые типы сжатия: gz, br, xz, zst, lz4 и bz2. |
Возвращаемое значение
Таблица указанного формата и структуры с данными из файлов, путь к которым соответствует указанному.
Пример
Пусть имеется кластер с именем my_cluster, и задано следующее значение настройки user_files_path:
Также, при условии, что в user_files_path каждого узла кластера есть файлы test1.csv и test2.csv, и их содержимое одинаково на всех узлах:
Например, можно создать эти файлы, выполнив эти два запроса на каждом узле кластера:
Теперь прочитайте данные из файлов test1.csv и test2.csv с помощью табличной функции fileCluster:
Глоб-шаблоны в пути
Все шаблоны, поддерживаемые табличной функцией File, также поддерживаются функцией FileCluster.