3.5 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/ru/sql-reference/table-functions/s3Cluster | 55 | s3Cluster |
Табличная функция s3Cluster
Позволяет обрабатывать файлы из Amazon S3 параллельно из многих узлов в указанном кластере. На узле-инициаторе функция создает соединение со всеми узлами в кластере, заменяет символы '*' в пути к файлу S3 и динамически отправляет каждый файл. На рабочем узле функция запрашивает у инициатора следующую задачу и обрабатывает ее. Это повторяется до тех пор, пока все задачи не будут завершены.
Синтаксис
s3Cluster(cluster_name, source, [,access_key_id, secret_access_key] [,format] [,structure])
Аргументы
cluster_name
— имя кластера, используемое для создания набора адресов и параметров подключения к удаленным и локальным серверам.source
— URL файла или нескольких файлов. Поддерживает следующие символы подстановки:*
,?
,{'abc','def'}
и{N..M}
, гдеN
,M
— числа,abc
,def
— строки. Подробнее смотрите в разделе Символы подстановки.access_key_id
иsecret_access_key
— ключи, указывающие на учетные данные для использования с точкой приема запроса. Необязательные параметры.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)))');
:::danger "Внимание"
Если список файлов содержит диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или используйте ?
.
Смотрите также