Apache Arrow Flight インターフェイス
ClickHouse は、Arrow IPC フォーマットを gRPC 上で利用して効率的なカラム型データ転送を行う、高性能な RPC フレームワークである Apache Arrow Flight プロトコルとの連携をサポートしています。
このインターフェイスにより、Flight SQL クライアントは ClickHouse に対してクエリを実行し、結果を Arrow フォーマットで取得できます。これにより、分析ワークロード向けに高スループットかつ低レイテンシなクエリ処理が可能になります。
機能
- Arrow Flight SQL プロトコル経由で SQL クエリを実行
- クエリ結果を Apache Arrow 形式でストリーミング配信
- Arrow Flight をサポートする BI ツールや独自のデータアプリケーションとの統合
- gRPC を用いた軽量かつ高性能な通信
制限事項
Arrow Flight インターフェイスは現在、実験的な段階であり、活発に開発が進められています。既知の制限事項には次のようなものがあります。
- ClickHouse 固有の複雑な SQL 機能に対するサポートが限定的です
- すべての Arrow Flight SQL メタデータ操作がまだ実装されていません
- リファレンス実装には、組み込みの認証機能や TLS 設定はありません
互換性の問題が発生した場合やコントリビュートを希望される場合は、ClickHouse リポジトリでissue を作成してください。
Arrow Flight サーバーの実行
自己管理の ClickHouse インスタンスで Arrow Flight サーバーを有効化するには、サーバー設定に次の構成を追加します。
ClickHouse サーバーを再起動します。起動に成功すると、次のようなログメッセージが表示されます。
Arrow Flight SQL を使用して ClickHouse に接続する
Arrow Flight SQL をサポートする任意のクライアントを利用できます。たとえば、pyarrow を使う場合は次のとおりです。
互換性
Arrow Flight インターフェースは、次のような技術スタックで構築されたカスタムアプリケーションを含め、Arrow Flight SQL をサポートするツールと互換性があります。
- Python (
pyarrow) - Java (
arrow-flight) - C++ およびその他の gRPC 互換言語
利用しているツール向けにネイティブな ClickHouse コネクタ(例: JDBC、ODBC)が利用可能な場合、パフォーマンスやフォーマット互換性の理由で Arrow Flight が明示的に必要な場合を除き、そちらを優先して使用してください。
クエリのキャンセル
長時間実行中のクエリは、クライアント側で gRPC 接続を閉じることでキャンセルできます。より高度なキャンセル機能のサポートの追加が計画されています。
詳しくは次を参照してください。