Перейти к основному содержанию

Описание

ArrowStream — это формат Apache Arrow, работающий в «потоковом режиме». Он предназначен для обработки потоковых данных в памяти.

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

В примере ниже мы используем набор данных forex, доступный в Песочнице ClickHouse. К нему можно подключиться удалённо с помощью clickhouse-client, используя хост sql-clickhouse.clickhouse.com и пользователя demo (без пароля). Таблица forex находится в базе данных forex, поэтому мы выбираем её в качестве базы данных по умолчанию:
Таблица forex хранит курсы валют. Мы можем оценить её размер и степень сжатия на диске, выполнив запрос к system.columns:
Query
Response
В отличие от формата Arrow в режиме “file mode”, которому для чтения нужен результат целиком, ArrowStream передаётся как последовательность батчей записей, которые потребитель может читать по мере их поступления. Благодаря этому он хорошо подходит для стриминга результата запроса напрямую в инструмент визуализации или аналитики без предварительной материализации всего набора данных. Чтобы передавать результат потоком, отправьте запрос через HTTP-интерфейс ClickHouse с помощью запроса POST и считывайте ответ как поток Arrow. Мы отключаем сжатие вывода Arrow с помощью настройки output_format_arrow_compression_method, чтобы потребители могли декодировать батчи напрямую по мере получения. Вывод ArrowStream представляет собой необработанные двоичные данные, поэтому вместо вывода в терминал мы направляем его в потребитель. Поток является самоописывающимся (он содержит собственную схему), поэтому здесь мы направляем его напрямую в clickhouse-local, который читает входящие батчи с помощью --input-format ArrowStream и выполняет к ним запросы как к таблице. Таблица forex большая, поэтому мы ограничиваем удалённый запрос с помощью предиката WHERE и LIMIT, чтобы этот пример оставался компактным:
Response
Тот же поток может инкрементально обрабатываться любым клиентом с поддержкой Arrow, который считывает его батч за батчем, а не буферизует результат целиком. Например, при использовании библиотеки Apache Arrow для JavaScript объект RecordBatchReader возвращает каждый батч записей сразу после его получения от server:
Полное пошаговое руководство по потоковой передаче данных ArrowStream из ClickHouse в визуализацию в реальном времени с Perspective см. в записи блога Потоковая визуализация в реальном времени с ClickHouse, Apache Arrow и Perspective.

Настройки формата

ArrowStream использует те же настройки формата, что и Arrow.
Последнее изменение 3 июля 2026 г.