El motor de tabla ArrowFlight permite a ClickHouse leer de y escribir en conjuntos de datos remotos mediante el protocolo Apache Arrow Flight. Esta integración permite a ClickHouse interactuar con servidores externos compatibles con Flight en formato Arrow columnar y con alto rendimiento.
Crear una tabla
CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);Parámetros del motor
host:port— Dirección del servidor remoto de Arrow Flight. Si se omite el puerto, se usa el puerto predeterminado8815. String.dataset_name— Identificador del conjunto de datos en el servidor de Flight (se usa como descriptor PATH o en una consultaSELECT *, según la configuraciónarrow_flight_request_descriptor_type). String.username— Nombre de usuario que se usará con autenticación básica de estilo HTTP. String.password— Contraseña que se usará con autenticación básica de estilo HTTP. String.
Si se omiten username y password, significa que no se usa autenticación (eso solo funcionará si el servidor de Arrow Flight permite el acceso sin autenticación).
La lista de columnas es opcional: si se omite, el esquema se infiere desde el servidor remoto de Arrow Flight mediante GetSchema.
Colecciones con nombre
El motor admite colecciones con nombre para almacenar parámetros de conexión:
CREATE TABLE remote_flight_data
ENGINE = ArrowFlight(named_collection_name);Parámetros de la colección con nombre:
| Parámetro | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|
host or hostname |
No | "" |
Nombre de host del servidor. |
port |
Sí | — | Puerto del servidor. |
dataset |
No | "" |
Nombre del conjunto de datos o descriptor. |
use_basic_authentication |
No | true |
Habilita la autenticación básica. |
user or username |
Si la autenticación está habilitada | — | Nombre de usuario para la autenticación. |
password |
No | "" |
Contraseña para la autenticación. |
enable_ssl |
No | false |
Habilita el cifrado TLS. |
ssl_ca |
No | "" |
Ruta al archivo del certificado de la CA para la verificación TLS. |
ssl_override_hostname |
No | "" |
Sobrescribe el nombre de host que se comprueba durante la verificación TLS. |
Configuración
arrow_flight_request_descriptor_type— Controla cómo se envía el nombre del conjunto de datos al servidor de Flight. Valores posibles:path(predeterminado; se envía como un descriptor PATH) ocommand(se envía como un descriptor CMD conSELECT * FROM <dataset>). Usacommandpara servidores de Flight que esperan comandos SQL (por ejemplo, Dremio).
Ejemplo de uso
Lectura de datos desde un servidor remoto de 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 │
└────┴─────────┴───────┘Inserción de datos en un servidor remoto de Arrow Flight:
INSERT INTO remote_flight_data VALUES (4, 'qux', 99.9);Notas
- Si se especifican columnas en la sentencia
CREATE TABLE, deben coincidir con el esquema devuelto por el servidor de Flight. - Si se omiten las columnas, el esquema se infiere automáticamente del servidor remoto.
- Se admiten tanto la lectura (
SELECT) como la escritura (INSERT). - La configuración
arrow_flight_request_descriptor_typecontrola si el nombre del conjunto de datos se envía como un descriptor PATH o como un descriptor CMD que encapsula una consultaSELECT *.