Табличная функция s3Cluster
Позволяет обрабатывать файлы из Amazon S3 параллельно из многих узлов в указанном кластере. На узле-инициаторе функция создает соединение со всеми узлами в кластере, заменяет символы '*' в пути к файлу S3 и динамически отправляет каждый файл. На рабочем узле функция запрашивает у инициатора следующую задачу и обрабатывает ее. Это повторяется до тех пор, пока все задачи не будут завершены.
Синтаксис
s3Cluster(cluster_name, source, [,access_key_id, secret_access_key [,session_token]] [,format] [,structure])
Аргументы
cluster_name
— имя кластера, используемое для создания набора адресов и параметров подключения к удаленным и локальным серверам.source
— URL файла или нескольких файлов. Поддерживает следующие символы подстановки:*
,?
,{'abc','def'}
и{N..M}
, гдеN
,M
— числа,abc
,def
— строки. Подробнее смотрите в разделе Символы подстановки.access_key_id
,secret_access_key
иsession_token
— ключи, указывающие на учетные данные для использования с точкой приема запроса. Необязательные параметры.format
— формат файла.structure
— структура таблицы. Формат'column1_name column1_type, column2_name column2_type, ...'
.
Возвращаемое значение
Таблица с указанной структурой для чтения или записи данных в указанный файл.
Примеры
Вывод данных из всех файлов кластера cluster_simple
:
SELECT * FROM s3Cluster('cluster_simple', 'http://minio1:9001/root/data/{clickhouse,database}/*', 'minio', 'minio123', 'CSV', 'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))') ORDER BY (name, value, polygon);
Подсчет общего количества строк во всех файлах кластера cluster_simple
:
SELECT count(*) FROM s3Cluster('cluster_simple', 'http://minio1:9001/root/data/{clickhouse,database}/*', 'minio', 'minio123', 'CSV', 'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))');
Если список файлов содержит диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или используйте ?
.
Смотрите также