지정된 클러스터(cluster)의 여러 노드에서 HDFS 파일을 병렬로 처리할 수 있습니다. initiator 노드에서는 클러스터의 모든 노드에 연결(connection)을 생성하고, HDFS 파일 경로의 별표(*)를 확장한 뒤, 각 파일을 동적으로 분배합니다. worker 노드에서는 initiator에 다음으로 처리할 작업을 요청해 이를 처리합니다. 이 과정은 모든 작업이 완료될 때까지 반복됩니다.
구문
hdfsCluster(cluster_name, URI, format, structure)인수
| 인수 | 설명 |
|---|---|
cluster_name |
원격 및 로컬 서버의 주소 집합과 연결 매개변수를 구성하는 데 사용되는 클러스터 이름입니다. |
URI |
파일 또는 여러 파일에 대한 URI입니다. 읽기 전용 모드에서는 다음 와일드카드를 지원합니다: *, **, ?, {'abc','def'} 및 {N..M}. 여기서 N, M은 숫자이고 abc, def는 문자열입니다. 자세한 내용은 Wildcards In Path를 참조하십시오. |
format |
파일의 포맷입니다. |
structure |
테이블 구조입니다. 포맷은 'column1_name column1_type, column2_name column2_type, ...'입니다. |
반환 값
지정된 파일에서 데이터를 읽기 위한, 지정된 구조의 테이블입니다.
예시
cluster_simple이라는 이름의 ClickHouse 클러스터가 있고, HDFS에 다음 URI를 사용하는 여러 파일이 있다고 가정합니다.
- 'hdfs://hdfs1:9000/some_dir/some_file_1'
- 'hdfs://hdfs1:9000/some_dir/some_file_2'
- 'hdfs://hdfs1:9000/some_dir/some_file_3'
- 'hdfs://hdfs1:9000/another_dir/some_file_1'
- 'hdfs://hdfs1:9000/another_dir/some_file_2'
- 'hdfs://hdfs1:9000/another_dir/some_file_3'
- 이 파일들의 행 수를 조회합니다:
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')