| Entrée | Sortie | Alias |
|---|---|---|
| ✔ | ✔ |
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
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 :
forex stocke les taux de change. Nous pouvons examiner sa taille et
son taux de compression sur disque en interrogeant system.columns :
Query
Response
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
RecordBatchReader produit chaque lot d’enregistrements dès qu’il est diffusé en streaming par le
serveur :
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.
| Paramètre | Description | Valeur par défaut |
|---|---|---|
input_format_arrow_allow_missing_columns | Autoriser les colonnes manquantes lors de la lecture des formats d’entrée Arrow | 1 |
input_format_arrow_case_insensitive_column_matching | Ignorer la casse lors de la correspondance entre les colonnes Arrow et les colonnes CH. | 0 |
input_format_arrow_import_nested | Paramètre obsolète, sans effet. | 0 |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Ignorer les colonnes dont les types ne sont pas pris en charge lors de l’inférence de schéma pour le format Arrow | 0 |
output_format_arrow_compression_method | Méthode de compression pour le format de sortie Arrow. Codecs pris en charge : lz4_frame, zstd, none (non compressé) | lz4_frame |
output_format_arrow_date_as_uint16 | Écrire les valeurs Date comme de simples nombres 16 bits (relus comme UInt16), au lieu de les convertir en type Arrow DATE32 32 bits (relu comme Date32). | 0 |
output_format_arrow_fixed_string_as_fixed_byte_array | Utiliser le type Arrow FIXED_SIZE_BINARY au lieu de Binary pour les colonnes FixedString. | 1 |
output_format_arrow_low_cardinality_as_dictionary | Sortir le type LowCardinality sous forme de type Arrow Dictionary | 0 |
output_format_arrow_string_as_string | Utiliser le type Arrow String au lieu de Binary pour les colonnes String | 1 |
output_format_arrow_unsupported_types_as_binary | Produire sous forme de données binaires brutes les types qui n’ont pas de conversion. Si false, ces types déclenchent une exception UNKNOWN_TYPE. | 1 |
output_format_arrow_use_64_bit_indexes_for_dictionary | Toujours utiliser des entiers 64 bits pour les indices de dictionnaire au format Arrow | 0 |
output_format_arrow_use_signed_indexes_for_dictionary | Utiliser des entiers signés pour les indices de dictionnaire au format Arrow | 1 |