Descripción
ArrowStream es el formato de Apache Arrow para el «modo stream». Está diseñado para procesar flujos en memoria.
Ejemplo de uso
forex, que está disponible en el
Playground de SQL de ClickHouse. Puede conectarse a él
de forma remota con clickhouse-client usando el host sql-clickhouse.clickhouse.com
y el usuario demo (que no tiene contraseña). La tabla forex se encuentra en la
base de datos forex, así que la seleccionamos como base de datos predeterminada:
forex almacena tipos de cambio de divisas. Podemos comprobar su tamaño y
el nivel de compresión en disco consultando system.columns:
Query
Response
Arrow en “modo archivo”, que
requiere el resultado completo antes de poder leerse, ArrowStream se entrega como una
secuencia de lotes de registros que un consumidor puede leer de forma incremental a medida que
llegan. Esto lo hace muy adecuado para transmitir el resultado de una consulta directamente a una
herramienta de visualización o analítica sin materializar antes el conjunto de datos completo.
Para transmitir el resultado, envíe la consulta a través de la interfaz HTTP de ClickHouse con una
solicitud POST y lea la respuesta como un flujo Arrow. Desactivamos la compresión
de la salida Arrow mediante la opción
output_format_arrow_compression_method
para que los consumidores puedan decodificar los lotes directamente a medida que se reciben.
La salida de ArrowStream es binaria sin procesar, así que, en lugar de imprimirla en la
terminal, la canalizamos a un consumidor. El flujo es autodescriptivo (lleva
su propio esquema), así que aquí lo canalizamos directamente a
clickhouse-local, que lee los
lotes entrantes con --input-format ArrowStream y los consulta como una tabla.
La tabla forex es grande, así que acotamos la consulta remota con un predicado WHERE
y un LIMIT para que este ejemplo sea breve:
Response
RecordBatchReader genera cada lote de registros en cuanto se transmite desde el
servidor:
ArrowStream desde ClickHouse a una
visualización en tiempo real con Perspective, consulta
la entrada del blog
Visualizaciones en tiempo real en streaming con ClickHouse, Apache Arrow y Perspective.
Configuración del formato
ArrowStream comparte la misma configuración de formato que Arrow.