Перейти к основному содержанию
Движок таблицы ArrowFlight позволяет ClickHouse выполнять запросы к удалённым наборам данных и вставку в них по протоколу Apache Arrow Flight. Эта интеграция позволяет ClickHouse с высокой производительностью взаимодействовать с внешними серверами с поддержкой Flight в столбцовом формате Apache 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 (используется как дескриптор PATH или в запросе SELECT * в зависимости от настройки arrow_flight_request_descriptor_type). String.
  • username — Имя пользователя для HTTP-аутентификации Basic. String.
  • password — Пароль для HTTP-аутентификации Basic. String.
Если username и password не указаны, аутентификация не используется (это работает, только если сервер Arrow Flight допускает неаутентифицированный доступ). Список столбцов необязателен — если он не указан, схема определяется автоматически на удалённом сервере Arrow Flight через GetSchema.

Именованные коллекции

Движок поддерживает именованные коллекции для хранения параметров подключения:
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Нет""Путь к файлу CA‑сертификата для проверки TLS.
ssl_override_hostnameНет""Переопределяет имя хоста, используемое при проверке TLS.

Настройки

  • arrow_flight_request_descriptor_type — Определяет, как имя набора данных отправляется на сервер Flight. Возможные значения: path (по умолчанию, отправляется как дескриптор PATH) или command (отправляется как дескриптор CMD с SELECT * FROM <dataset>). Используйте command для серверов Flight, которые ожидают SQL-команды (например, Dremio).

Пример использования

Чтение данных с удалённого сервера 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.
  • Если столбцы не указаны, схема автоматически определяется на основе данных удалённого сервера.
  • Поддерживаются как чтение (SELECT), так и запись (INSERT).
  • Параметр arrow_flight_request_descriptor_type определяет, будет ли имя набора данных отправлено как дескриптор PATH или как дескриптор CMD, содержащий запрос SELECT *.

См. также

Последнее изменение 29 июня 2026 г.