ArrowFlight 테이블 엔진을 사용하면 ClickHouse에서 Apache Arrow Flight 프로토콜을 통해 원격 데이터셋을 읽고 쓸 수 있습니다. 이 통합을 사용하면 ClickHouse에서 외부 Flight 지원 서버와 열 지향 Arrow 형식으로 고성능 상호 작용을 수행할 수 있습니다.
테이블 생성
CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);엔진 매개변수
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 서버에서 스키마를 추론합니다.
이름이 지정된 컬렉션
이 엔진은 연결 매개변수를 저장하기 위해 이름이 지정된 컬렉션을 지원합니다:
CREATE TABLE remote_flight_data
ENGINE = ArrowFlight(named_collection_name);명명된 컬렉션 매개변수:
| 매개변수 | 필수 | 기본값 | 설명 |
|---|---|---|---|
host or hostname |
아니요 | "" |
서버 호스트명입니다. |
port |
예 | — | 서버 포트입니다. |
dataset |
아니요 | "" |
데이터셋 이름 또는 디스크립터입니다. |
use_basic_authentication |
아니요 | true |
기본 인증을 활성화합니다. |
user or username |
인증 활성화 시 | — | 인증에 사용할 사용자 이름입니다. |
password |
아니요 | "" |
인증에 사용할 비밀번호입니다. |
enable_ssl |
아니요 | false |
TLS 암호화를 활성화합니다. |
ssl_ca |
아니요 | "" |
TLS 검증에 사용할 CA 인증서 파일 경로입니다. |
ssl_override_hostname |
아니요 | "" |
TLS 검증 시 확인할 호스트명을 재정의합니다. |
설정
arrow_flight_request_descriptor_type— 데이터셋 이름을 Flight 서버로 전송하는 방식을 제어합니다. 가능한 값은path(기본값, PATH 디스크립터로 전송) 또는command(SELECT * FROM <dataset>를 포함한 CMD 디스크립터로 전송)입니다. SQL 명령을 기대하는 Flight 서버(예: Dremio)에는command를 사용하십시오.
사용 예시
원격 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);참고 사항
CREATE TABLE문에서 컬럼을 지정한 경우, Flight 서버가 반환하는 스키마와 일치해야 합니다.- 컬럼을 생략한 경우, 스키마는 원격 server에서 자동으로 추론됩니다.
- 읽기(
SELECT)와 쓰기(INSERT)를 모두 지원합니다. arrow_flight_request_descriptor_type설정은 데이터셋 이름을 PATH 디스크립터로 보낼지, 또는SELECT *쿼리를 감싸는 CMD 디스크립터로 보낼지를 제어합니다.