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.

usernamepassword가 생략되면 인증이 사용되지 않아요(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 설명자로 보낼지를 제어해요.

더 알아보기 (Learn more)