hdfsCluster

hdfsCluster

지정된 클러스터의 여러 노드에서 HDFS 파일을 병렬로 처리할 수 있게 해주는 테이블 함수예요. hdfs 함수를 여러 노드에 분산해서 실행한다고 볼 수 있어요.

출처: 문서

본문

지정된 클러스터의 여러 노드에서 HDFS의 파일을 병렬로 처리할 수 있어요. 이니시에이터(initiator)는 클러스터의 모든 노드에 연결을 만들고, HDFS 파일 경로의 별표(*)를 풀어낸 뒤 각 파일을 동적으로 분배해요. 워커 노드는 이니시에이터에게 처리할 다음 작업을 물어보고 처리해요. 이 과정은 모든 작업이 끝날 때까지 반복돼요.

문법 (Syntax)

hdfsCluster(cluster_name, URI, format, structure)

인자 (Arguments)

인자 설명
cluster_name 원격·로컬 서버의 주소 집합과 연결 파라미터를 만드는 데 사용하는 클러스터 이름이에요.
URI 파일 또는 파일 묶음의 URI예요. 읽기 전용 모드에서 다음 와일드카드를 지원해요: *, **, ?, {'abc','def'}, {N..M}. 여기서 N, M은 숫자이고 abc, def는 문자열이에요. 자세한 내용은 경로의 와일드카드를 참고하세요.
format 파일의 포맷이에요.
structure 테이블의 구조예요. 'column1_name column1_type, column2_name column2_type, ...' 형태로 지정해요.

반환값 (Returned value)

지정된 파일의 데이터를 읽을 수 있는, 지정된 구조를 가진 테이블이에요.

예시 (Examples)

cluster_simple이라는 ClickHouse 클러스터가 있고, HDFS에 다음과 같은 URI를 가진 여러 파일이 있다고 가정해볼게요:

이 파일들의 행 수를 조회해요:

SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')

이 두 디렉터리의 모든 파일의 행 수를 조회해요:

SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')

파일 목록에 0으로 시작하는 숫자 범위가 들어 있다면, 각 자릿수마다 중괄호 구성을 사용하거나 ?를 사용하세요.

더 알아보기 (Learn more)