Passer au contenu principal

Description

ArrowStream est le format « mode flux » d’Apache Arrow. Il est conçu pour le traitement des flux en mémoire.

Exemple d’utilisation

Dans l’exemple ci-dessous, nous utilisons le dataset forex, disponible dans le ClickHouse SQL playground. Vous pouvez vous y connecter à distance avec clickhouse-client, en utilisant l’hôte sql-clickhouse.clickhouse.com et l’utilisateur demo (qui n’a pas de mot de passe). La table forex se trouve dans la base de données forex ; nous la sélectionnons donc comme base de données par défaut :
La table forex stocke les taux de change. Nous pouvons examiner sa taille et son taux de compression sur disque en interrogeant system.columns :
Query
Response
Contrairement au format Arrow en “mode fichier”, qui nécessite d’attendre le résultat complet avant de pouvoir le lire, ArrowStream est fourni sous la forme d’une séquence de lots d’enregistrements qu’un consommateur peut lire de façon incrémentielle, au fur et à mesure de leur arrivée. Il se prête donc particulièrement bien au streaming d’un résultat de la requête directement vers un outil de visualisation ou d’analyse, sans devoir d’abord matérialiser l’ensemble du jeu de données. Pour diffuser le résultat, envoyez la requête via l’interface HTTP de ClickHouse avec une requête POST et lisez la réponse comme un flux Arrow. Nous désactivons la compression de la sortie Arrow via le paramètre output_format_arrow_compression_method afin que les consommateurs puissent décoder directement les lots à mesure de leur réception. La sortie ArrowStream est du binaire brut, donc au lieu de l’afficher dans le terminal, nous la redirigeons vers un consommateur. Le flux est auto-descriptif (il transporte son propre schéma), donc ici nous le redirigeons directement vers clickhouse-local, qui lit les lots entrants avec --input-format ArrowStream et permet de les interroger comme une table. La table forex est volumineuse, nous limitons donc la requête distante avec un prédicat WHERE et un LIMIT afin de garder cet exemple concis :
Response
Le même flux peut être consommé progressivement par n’importe quel client compatible avec Arrow, qui le lit lot par lot plutôt que de mettre en mémoire tampon l’intégralité du résultat. Par exemple, en utilisant la bibliothèque JavaScript Apache Arrow, un RecordBatchReader produit chaque lot d’enregistrements dès qu’il est diffusé en streaming par le serveur :
Pour un guide complet sur la diffusion en continu de données ArrowStream de ClickHouse vers une visualisation en temps réel avec Perspective, consultez l’article de blog Visualisations en temps réel en streaming avec ClickHouse, Apache Arrow et Perspective.

Paramètres du format

ArrowStream utilise les mêmes paramètres de format que le format Arrow.
Dernière modification le 3 juillet 2026