跳转到主要内容
这是对 s3 表函数的扩展。 它允许在指定集群中由多个节点并行处理来自 Amazon S3 和 Google Cloud Storage Google Cloud Storage 的文件。在发起节点上,它会与集群中的所有节点建立连接,展开 S3 文件路径中的星号,并动态分发每个文件。在工作节点上,它会向发起节点请求下一个要处理的任务并执行处理。此过程会不断重复,直到所有任务都完成。

语法

s3Cluster(cluster_name, url[, NOSIGN | access_key_id, secret_access_key,[session_token]][, format][, structure][, compression_method][, headers][, extra_credentials])
s3Cluster(cluster_name, named_collection[, option=value [,..]])

参数

参数描述
cluster_name用于构建远程和本地服务器地址集合及连接参数的集群名称。
url文件或一组文件的路径。在只读模式下支持以下 wildcards:***?{'abc','def'}{N..M},其中 NM 表示数字,abcdef 表示字符串。更多信息请参见路径中的通配符
NOSIGN如果用此关键字代替 credentials,则所有请求都不会被签名。
access_key_id and secret_access_key用于指定在给定端点上使用的 credentials 的 key。可选。
session_token与给定 keys 一起使用的 session 标记。传递 keys 时可选。
format文件的 format
structure表的结构。格式为 'column1_name column1_type, column2_name column2_type, ...'
compression_method此参数为可选。支持的值:nonegzipgzbrotlibrxzLZMAzstdzst。默认情况下,会根据文件扩展名自动检测压缩方法。
headers此参数为可选。允许在 S3 请求中传递请求头。请按 headers(key=value) 格式传递,例如 headers('x-amz-request-payer' = 'requester')。有关用法示例,请参见此处
extra_credentials可选。可通过此参数传递 roleARN。示例请参见此处
参数也可以通过 命名集合 传递。在这种情况下,urlaccess_key_idsecret_access_keyformatstructurecompression_method 的用法相同,并且还支持一些额外参数:
参数描述
filename如果指定,则追加到 url。
use_environment_credentials默认启用,允许通过环境变量 AWS_CONTAINER_CREDENTIALS_RELATIVE_URIAWS_CONTAINER_CREDENTIALS_FULL_URIAWS_CONTAINER_AUTHORIZATION_TOKENAWS_EC2_METADATA_DISABLED 传递额外参数。
no_sign_request默认禁用。
expiration_window_seconds默认值为 120。

返回值

一个具有指定结构的表,用于读取或写入指定文件中的数据。

示例

使用 cluster_simple 集群中的所有节点,查询 /root/data/clickhouse/root/data/database/ 文件夹中所有文件的数据:
SELECT * FROM s3Cluster(
    'cluster_simple',
    'http://minio1:9001/root/data/{clickhouse,database}/*',
    'minio',
    'ClickHouse_Minio_P@ssw0rd',
    'CSV',
    'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
) ORDER BY (name, value, polygon);
统计集群 cluster_simple 中所有文件的总行数:
如果文件列表中包含带前导零的数字范围,请对每一位分别使用花括号写法,或使用 ?
对于生产环境,建议使用 命名集合。示例如下:

CREATE NAMED COLLECTION creds AS
        access_key_id = 'minio',
        secret_access_key = 'ClickHouse_Minio_P@ssw0rd';
SELECT count(*) FROM s3Cluster(
    'cluster_simple', creds, url='https://s3-object-url.csv',
    format='CSV', structure='name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
)

访问私有和公共存储桶

用户可以采用与此处文档中 s3 函数相同的访问方式。

优化性能

有关如何优化 s3 函数性能的详细信息,请参阅详细指南
最后修改于 2026年6月10日