説明
ArrowStream は、Apache Arrow の「ストリームモード」フォーマットです。メモリ内でのストリーム処理向けに設計されています。
使用例
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
RecordBatchReader は各レコードバッチがサーバーからストリーミングされるとすぐに
返します。
ArrowStream データをストリーミングし、
Perspective でリアルタイム可視化を行う詳しい手順については、
ブログ記事
ClickHouse、Apache Arrow、Perspective を使用したリアルタイム可視化のストリーミング
を参照してください。
フォーマット設定
ArrowStream は Arrow フォーマットと同じフォーマット設定を使用します。