fileCluster 테이블 함수
fileCluster 테이블 함수 (fileCluster)
지정된 경로와 일치하는 파일을 클러스터 내 여러 노드에서 동시에 처리할 수 있게 해줘요. 이니시에이터는 워커 노드에 연결을 맺고, 파일 경로의 globs를 펼친 다음 파일 읽기 작업을 워커 노드에 위임합니다. 각 워커 노드는 이니시에이터에게 처리할 다음 파일을 요청하며, 모든 작업(모든 파일 읽기)이 완료될 때까지 반복합니다.
출처: 문서
본문
클러스터 내 여러 노드에서 지정된 경로와 일치하는 파일을 동시에 처리할 수 있게 해줍니다. 이니시에이터는 워커 노드에 연결을 맺고, 파일 경로의 globs를 펼친 다음 파일 읽기 작업을 워커 노드에 위임합니다. 각 워커 노드는 이니시에이터에게 처리할 다음 파일을 요청하며, 모든 작업(모든 파일 읽기)이 완료될 때까지 반복합니다.
이 함수는 처음 지정된 경로와 일치하는 파일 집합이 모든 노드에서 동일하고, 그 내용이 노드 간에 일관될 때만 올바르게 동작합니다.
파일이 노드마다 다르면 반환 값을 미리 정할 수 없으며, 워커 노드가 이니시에이터에게 작업을 요청하는 순서에 따라 달라집니다.
구문
fileCluster(cluster_name, path[, format, structure, compression_method])
인자
| 인자 | 설명 |
|---|---|
cluster_name |
원격·로컬 서버에 대한 주소 집합과 연결 파라미터를 만드는 데 사용하는 클러스터 이름. |
path |
user_files_path에서 파일까지의 상대 경로. 파일 경로는 globs도 지원합니다. |
format |
파일의 포맷. 타입: String. |
structure |
'UserID UInt64, Name String' 형식의 테이블 구조. 컬럼 이름과 타입을 결정합니다. 타입: String. |
compression_method |
압축 방법. 지원 값: none(압축 없음), gzip/gz, deflate, brotli/br, lzma/xz, zstd/zst, lz4, bz2, snappy. snappy의 경우 snappy_mode 설정(basic이 기본값)으로 와이어 포맷을 선택합니다. |
반환 값
지정된 포맷과 구조를 가지며, 지정된 경로와 일치하는 파일의 데이터를 담은 테이블.
예제
my_cluster라는 클러스터와 다음 같은 user_files_path 설정 값이 있다고 가정합니다:
$ grep user_files_path /etc/clickhouse-server/config.xml
<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
또한 각 클러스터 노드의 user_files_path 안에 test1.csv와 test2.csv 파일이 있고, 그 내용이 다른 노드 간에 동일하다고 가정합니다:
$ cat /var/lib/clickhouse/user_files/test1.csv
1,"file1"
11,"file11"
$ cat /var/lib/clickhouse/user_files/test2.csv
2,"file2"
22,"file22"
예를 들어, 모든 클러스터 노드에서 다음 두 쿼리를 실행해 이 파일들을 만들 수 있습니다:
INSERT INTO TABLE FUNCTION file('file1.csv', 'CSV', 'i UInt32, s String') VALUES (1,'file1'), (11,'file11');
INSERT INTO TABLE FUNCTION file('file2.csv', 'CSV', 'i UInt32, s String') VALUES (2,'file2'), (22,'file22');
이제 fileCluster 테이블 함수로 test1.csv와 test2.csv의 데이터 내용을 읽습니다:
SELECT * FROM fileCluster('my_cluster', 'file{1,2}.csv', 'CSV', 'i UInt32, s String') ORDER BY i, s
┌──i─┬─s──────┐
│ 1 │ file1 │
│ 11 │ file11 │
└────┴────────┘
┌──i─┬─s──────┐
│ 2 │ file2 │
│ 22 │ file22 │
└────┴────────┘
경로의 Globs
File 테이블 함수가 지원하는 모든 패턴을 FileCluster도 지원합니다.