Esta é uma extensão da função de tabela s3.
Permite processar arquivos do Amazon S3 e do Google Cloud Storage Google Cloud Storage em paralelo usando muitos nós em um cluster especificado. No nó iniciador, cria uma conexão com todos os nós do cluster, expande os asteriscos no caminho do arquivo S3 e distribui cada arquivo dinamicamente. No nó worker, consulta o iniciador sobre a próxima tarefa a ser processada e a processa. Esse processo se repete até que todas as tarefas sejam concluídas.
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 [,..]])
| Argumento | Descrição |
|---|
cluster_name | Nome de um cluster usado para criar um conjunto de endereços e parâmetros de conexão para servidores remotos e locais. |
url | caminho para um arquivo ou um conjunto de arquivos. Suporta os seguintes curingas no modo somente leitura: *, **, ?, {'abc','def'} e {N..M}, em que N, M — números, abc, def — strings. Para mais informações, consulte Wildcards In Path. |
NOSIGN | Se esta palavra-chave for fornecida no lugar das credenciais, nenhuma das requisições será assinada. |
access_key_id and secret_access_key | Chaves que especificam as credenciais a serem usadas com o endpoint informado. Opcional. |
session_token | Token de sessão a ser usado com as chaves informadas. Opcional ao informar chaves. |
format | O formato do arquivo. |
structure | Estrutura da tabela. Formato 'column1_name column1_type, column2_name column2_type, ...'. |
compression_method | O parâmetro é opcional. Valores suportados: none, gzip ou gz, brotli ou br, xz ou LZMA, zstd ou zst. Por padrão, o método de compressão será detectado automaticamente pela extensão do arquivo. |
headers | O parâmetro é opcional. Permite enviar headers na requisição ao S3. Informe no formato headers(key=value), por exemplo headers('x-amz-request-payer' = 'requester'). Veja aqui um exemplo de uso. |
extra_credentials | Opcional. roleARN pode ser passado por meio deste parâmetro. Veja aqui um exemplo. |
Os argumentos também podem ser passados usando coleções nomeadas. Nesse caso, url, access_key_id, secret_access_key, format, structure, compression_method funcionam da mesma forma, e alguns parâmetros extras são suportados:
| Argumento | Descrição |
|---|
filename | acrescentado à url, se especificado. |
use_environment_credentials | habilitado por padrão, permite passar parâmetros extras usando as variáveis de ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_EC2_METADATA_DISABLED. |
no_sign_request | desativado por padrão. |
expiration_window_seconds | o valor padrão é 120. |
Uma tabela com a estrutura especificada para leitura ou gravação de dados no arquivo especificado.
Selecione os dados de todos os arquivos nas pastas /root/data/clickhouse e /root/data/database/, usando todos os nós do cluster cluster_simple:
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);
Conte o número total de linhas em todos os arquivos no cluster cluster_simple:
Se a listagem de arquivos contiver intervalos numéricos com zeros à esquerda, use a construção com chaves para cada dígito separadamente ou use ?.
Para casos de uso em produção, recomenda-se usar coleções nomeadas. Veja o exemplo:
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)))'
)
Acessando buckets privados e públicos
Os usuários podem usar as mesmas abordagens documentadas aqui para a função de tabela s3.
Para saber mais sobre como otimizar o desempenho da função de tabela s3, consulte nosso guia detalhado.