s3Cluster 表函数
这是对 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])
s3Cluster(cluster_name, named_collection[, option=value [,..]])
参数
cluster_name
— 用于构建一组地址和到远程和本地服务器的连接参数的集群名称。url
— 文件或一批文件的路径。在只读模式下支持以下通配符:*
、**
、?
、{'abc','def'}
和{N..M}
,其中N
、M
— 数字,abc
、def
— 字符串。有关更多信息,请参阅 路径中的通配符。NOSIGN
— 如果在凭据位置提供此关键字,则所有请求都不会签名。access_key_id
和secret_access_key
— 指定要与给定端点一起使用的凭据的密钥。可选。session_token
- 要与给定密钥一起使用的会话令牌。传递密钥时可选。format
— 文件的 格式。structure
— 表的结构。格式'column1_name column1_type, column2_name column2_type, ...'
。compression_method
— 参数可选。支持的值:none
、gzip/gz
、brotli/br
、xz/LZMA
、zstd/zst
。默认情况下,它将通过文件扩展名自动检测压缩方法。
也可以使用 命名集合 传递参数。在这种情况下,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/
文件夹中的所有文件中选择数据
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
集群中所有文件中的总行数
提示
如果您的文件列表包含带有前导零的数字范围,请对每个数字单独使用带大括号的结构或使用 ?
。
对于生产用例,建议使用 命名集合。这是一个示例
CREATE NAMED COLLECTION creds AS
access_key_id = 'minio',
secret_access_key = 'minio123';
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)))'
)
另请参阅