s3Cluster

s3Cluster

s3 테이블 함수의 확장이에요. 지정된 클러스터의 여러 노드에서 Amazon S3와 Google Cloud Storage의 파일을 병렬로 처리할 수 있게 해줘요.

출처: 문서

본문

이 함수는 s3 테이블 함수의 확장이에요.

지정된 클러스터의 여러 노드에서 Amazon S3Google 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_idsecret_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 함수의 성능 최적화에 대한 자세한 내용은 상세 가이드를 참고하세요.

더 알아보기 (Learn more)