s3 테이블 함수의 확장입니다.
지정된 클러스터의 여러 노드를 사용해 Amazon S3 및 Google Cloud Storage Google Cloud Storage의 파일을 병렬로 처리할 수 있습니다. initiator 노드는 클러스터의 모든 노드에 connection을 생성하고, S3 파일 경로의 와일드카드(*)를 전개한 다음 각 파일을 동적으로 분배합니다. worker 노드는 initiator에 다음에 처리할 작업을 요청해 이를 처리합니다. 이 과정은 모든 작업이 완료될 때까지 반복됩니다.
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 | 파일 하나 또는 여러 파일의 경로입니다. 읽기 전용 모드에서는 다음 와일드카드를 지원합니다: *, **, ?, {'abc','def'} 및 {N..M}. 여기서 N, M은 숫자이고 abc, def는 문자열입니다. 자세한 내용은 Wildcards In Path를 참조하십시오. |
NOSIGN | 자격 증명 대신 이 키워드를 지정하면 모든 요청에 서명하지 않습니다. |
access_key_id and 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입니다. 기본적으로 파일 확장자를 기준으로 압축 방식을 자동 감지합니다. |
headers | 매개변수는 선택 사항입니다. S3 요청에 헤더를 전달할 수 있습니다. headers(key=value) 형식으로 전달하십시오. 예: headers('x-amz-request-payer' = 'requester'). 사용 예시는 here를 참조하십시오. |
extra_credentials | 선택 사항입니다. roleARN은 이 매개변수를 통해 전달할 수 있습니다. 예시는 here를 참조하십시오. |
인수는 이름이 지정된 컬렉션을 사용해 전달할 수도 있습니다. 이 경우 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',
'ClickHouse_Minio_P@ssw0rd',
'CSV',
'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
) ORDER BY (name, value, polygon);
cluster_simple 클러스터의 모든 파일에 있는 전체 행 수를 계산합니다:
파일 목록에 앞자리가 0인 숫자 범위가 포함된 경우, 각 자릿수별로 중괄호를 사용하는 구문을 사용하거나 ?를 사용하십시오.
프로덕션 환경에서는 이름이 지정된 컬렉션을 사용하는 것이 좋습니다. 다음은 예시입니다:
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 함수의 성능을 최적화하는 방법에 대한 자세한 내용은 상세 가이드를 참조하십시오.