s3Cluster
s3Cluster
s3 테이블 함수의 확장이에요. 지정된 클러스터의 여러 노드에서 Amazon S3와 Google Cloud Storage의 파일을 병렬로 처리할 수 있게 해줘요.
출처: 문서
본문
이 함수는 s3 테이블 함수의 확장이에요.
지정된 클러스터의 여러 노드에서 Amazon S3와 Google Cloud Storage의 파일을 병렬로 처리할 수 있어요. 이니시에이터(initiator)는 클러스터의 모든 노드에 연결을 만들고, S3 파일 경로의 별표를 풀어낸 뒤 각 파일을 동적으로 분배해요. 워커 노드는 이니시에이터에게 처리할 다음 작업을 물어보고 처리해요. 이 과정은 모든 작업이 끝날 때까지 반복돼요.
문법 (Syntax)
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 [,..]])
인자 (Arguments)
| 인자 | 설명 |
|---|---|
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, deflate, brotli 또는 br, xz 또는 LZMA, zstd 또는 zst, lz4, bz2, snappy. 기본적으로 파일 확장자로 압축 방법을 자동 감지해요. snappy의 경우 와이어 포맷은 snappy_mode 설정(기본은 basic`)으로 선택돼요. |
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이에요. |
반환값 (Returned value)
지정된 파일의 데이터를 읽거나 쓸 수 있는, 지정된 구조를 가진 테이블이에요.
예시 (Examples)
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)))'
)
프라이빗 및 공개 버킷 접근 (Accessing private and public buckets)
사용자는 s3 함수에 문서화된 것과 같은 접근 방식을 사용할 수 있어요. 여기를 참고하세요.
성능 최적화 (Optimizing performance)
s3 함수의 성능 최적화에 대한 자세한 내용은 상세 가이드를 참고하세요.