メインコンテンツへスキップ

説明

ArrowStream は、Apache Arrow の「ストリームモード」フォーマットです。メモリ内でのストリーム処理向けに設計されています。

使用例

以下の例では、ClickHouse SQL playground で利用できる forex データセットを使用します。clickhouse-client を使用すると、host に sql-clickhouse.clickhouse.com、user に demo (password なし) を指定してリモート接続できます。forex table は forex database にあるため、デフォルトの database としてそれを選択します。
forex テーブルには為替レートが保存されています。そのサイズや、 system.columns にクエリを実行して、ディスク上でどの程度圧縮効率が高いかを確認できます。
Query
Response
Arrow の “file mode” フォーマットは、読み取る前に結果全体が揃っている必要がありますが、ArrowStream は到着した順にコンシューマーが 順次読み取れるレコードバッチ列として配信されます。これにより、クエリ結果全体を先に マテリアライズすることなく、可視化ツールや分析ツールへ直接ストリーミングする用途に 適しています。 結果をストリーミングするには、ClickHouse の HTTPインターフェイス経由でクエリを POST リクエストとして送信し、レスポンスを Arrow ストリームとして読み取ります。Arrow 出力の 圧縮は output_format_arrow_compression_method 設定で無効にしています。これにより、コンシューマーは受信した バッチを受信しながらそのままデコードできます。 ArrowStream の出力は生のバイナリなので、 ターミナルに表示する代わりにコンシューマーにパイプします。このストリームは自己記述的で (自身の スキーマを持っています) 、ここではそのまま clickhouse-local にパイプします。これにより、到着した バッチを --input-format ArrowStream で読み込み、テーブルとしてクエリできます。 forex テーブルは大きいため、この例を簡潔に保つために、リモートクエリを WHERE 条件と LIMIT で絞っています。
Response
同じストリームは、Arrow 対応の任意のクライアントで順次処理でき、 結果全体をバッファリングするのではなく、バッチごとに読み取れます。たとえば、 Apache Arrow JavaScript library を使用すると、 RecordBatchReader は各レコードバッチがサーバーからストリーミングされるとすぐに 返します。
ClickHouse から ArrowStream データをストリーミングし、 Perspective でリアルタイム可視化を行う詳しい手順については、 ブログ記事 ClickHouse、Apache Arrow、Perspective を使用したリアルタイム可視化のストリーミング を参照してください。

フォーマット設定

ArrowStreamArrow フォーマットと同じフォーマット設定を使用します。
最終更新日 2026年7月2日