s3Cluster 表函数
这是对 s3 表函数的扩展。
允许在指定集群中的多个节点上并行处理来自 Amazon S3 和 Google Cloud Storage 的文件。在发起节点上,它会与集群中所有节点建立连接,展开 S3 文件路径中的星号通配符,并动态分发每个文件。在工作节点上,它会向发起节点请求下一个要处理的任务并进行处理。该过程会重复进行,直到所有任务完成。
语法
参数
| 参数 | 描述 |
|---|---|
cluster_name | 用于构建到远程和本地服务器地址集和连接参数的集群名称。 |
url | 文件或一组文件的路径。在只读模式下支持以下通配符:*、**、?、{'abc','def'} 和 {N..M},其中 N、M 为数字,abc、def 为字符串。更多信息参见路径中的通配符。 |
NOSIGN | 如果在凭据位置提供此关键字,则所有请求都将不进行签名。 |
access_key_id and secret_access_key | 指定与给定 endpoint(端点)一起使用的凭据密钥。可选。 |
session_token | 与给定密钥一起使用的会话令牌。在传递密钥时为可选项。 |
format | 文件的格式。 |
structure | 表的结构。格式为 'column1_name column1_type, column2_name column2_type, ...'。 |
compression_method | 可选参数。支持的取值:none、gzip 或 gz、brotli 或 br、xz 或 LZMA、zstd 或 zst。默认情况下,将根据文件扩展名自动检测压缩方法。 |
headers | 可选参数。允许在 S3 请求中传递请求头。以 headers(key=value) 的格式传入,例如 headers('x-amz-request-payer' = 'requester')。使用示例参见此处。 |
extra_credentials | 可选。可以通过此参数传递 roleARN。示例参见此处。 |
参数也可以通过命名集合传递。在这种情况下,url、access_key_id、secret_access_key、format、structure、compression_method 的行为相同,并且还支持一些额外参数:
| 参数 | 描述 |
|---|---|
filename | 如果指定,则会追加到 url 后面。 |
use_environment_credentials | 默认启用,允许通过环境变量 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI、AWS_CONTAINER_CREDENTIALS_FULL_URI、AWS_CONTAINER_AUTHORIZATION_TOKEN、AWS_EC2_METADATA_DISABLED 传递额外参数。 |
no_sign_request | 默认禁用。 |
expiration_window_seconds | 默认值为 120。 |
返回值
一个具有指定结构的表,用于对指定文件进行数据读写。
示例
使用 cluster_simple 集群中的所有节点,查询 /root/data/clickhouse 和 /root/data/database/ 目录中所有文件的数据:
统计集群 cluster_simple 中所有文件的总行数:
提示
如果文件列表中包含带前导零的数字范围,请对每一位数字分别使用花括号,或者使用 ?。
在生产环境场景中,推荐使用命名集合。示例如下:
访问私有和公共存储桶
用户可以使用与 s3 函数文档中描述的相同方法,详见此处。
性能优化
有关如何优化 s3 函数性能的更多信息,请参阅详细指南。