Движок таблицы 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 *.