ArrowFlight 테이블 엔진
ArrowFlight 테이블 엔진
Apache Arrow Flight 프로토콜을 통해 원격 데이터셋을 읽고 쓸 수 있게 해주는 테이블 엔진이에요. 이 통합으로 ClickHouse가 Flight 지원 외부 서버와 높은 성능의 컬럼형 Arrow 형식으로 상호작용할 수 있어요.
출처: 문서
본문
ArrowFlight 테이블 엔진은 Apache Arrow Flight 프로토콜을 통해 원격 데이터셋에서 읽고 쓰는 것을 가능하게 해줘요. 이 통합은 ClickHouse가 Flight 지원 외부 서버와 높은 성능의 컬럼형 Arrow 형식으로 상호작용할 수 있게 해줘요.
테이블 만들기 (Creating a Table)
CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);
엔진 매개변수 (Engine Parameters)
host:port— 원격 Arrow Flight 서버의 주소. 포트가 생략되면 기본 포트8815가 사용돼요. String.dataset_name— Flight 서버의 데이터셋 식별자(arrow_flight_request_descriptor_type설정에 따라 PATH 설명자로 또는SELECT *쿼리에서 사용돼요). String.username— 기본 HTTP 인증의 사용자 이름. String.password— 기본 HTTP 인증의 비밀번호. String.
username과 password가 생략되면 인증이 사용되지 않아요(Arrow Flight 서버가 인증 없는 접근을 허용할 때만 동작해요). 컬럼 목록은 선택 사항이에요. 생략하면 스키마가 GetSchema를 통해 원격 Arrow Flight 서버에서 추론돼요.
명명된 컬렉션 (Named Collections)
엔진은 연결 매개변수를 저장하는 명명된 컬렉션(named collections)을 지원해요.
CREATE TABLE remote_flight_data
ENGINE = ArrowFlight(named_collection_name);
명명된 컬렉션 매개변수:
| 매개변수 | 필수 | 기본값 | 설명 |
|---|---|---|---|
host 또는 hostname |
아니요 | "" |
서버 호스트 이름. |
port |
예 | — | 서버 포트. |
dataset |
아니요 | "" |
데이터셋 이름 또는 설명자. |
use_basic_authentication |
아니요 | true |
기본 인증 활성화. |
user 또는 username |
인증이 켜지면 | — | 인증용 사용자 이름. |
password |
아니요 | "" |
인증용 비밀번호. |
enable_ssl |
아니요 | false |
TLS 암호화 활성화. |
ssl_ca |
아니요 | "" |
TLS 검증용 CA 인증서 파일 경로. |
ssl_override_hostname |
아니요 | "" |
TLS 검증 중 검사되는 호스트 이름 재정의. |
설정 (Settings)
arrow_flight_request_descriptor_type— 데이터셋 이름이 Flight 서버로 어떻게 보내지는지를 제어해요. 가능한 값:path(기본값, PATH 설명자로 전송) 또는command(SELECT * FROM <dataset>으로 CMD 설명자로 전송). SQL 명령을 기대하는 Flight 서버(예: Dremio)에는command를 사용해요.
사용 예시 (Usage Example)
원격 Arrow Flight 서버에서 데이터 읽기:
CREATE TABLE remote_flight_data
(
id UInt32,
name String,
value Float64
) ENGINE = ArrowFlight('127.0.0.1:9005', 'sample_dataset');
SELECT * FROM remote_flight_data ORDER BY id;
┌─id─┬─name────┬─value─┐
│ 1 │ foo │ 42.1 │
│ 2 │ bar │ 13.3 │
│ 3 │ baz │ 77.0 │
└────┴─────────┴───────┘
원격 Arrow Flight 서버에 데이터 삽입:
INSERT INTO remote_flight_data VALUES (4, 'qux', 99.9);
참고 (Notes)
CREATE TABLE문에 컬럼이 지정되면 Flight 서버가 반환하는 스키마와 일치해야 해요.- 컬럼이 생략되면 스키마가 원격 서버에서 자동으로 추론돼요.
- 읽기(
SELECT)와 쓰기(INSERT)가 모두 지원돼요. arrow_flight_request_descriptor_type설정은 데이터셋 이름을 PATH 설명자로 보낼지,SELECT *쿼리를 감싼 CMD 설명자로 보낼지를 제어해요.