Skip to main content
ArrowFlight テーブルエンジンを使用すると、ClickHouse は Apache Arrow Flight プロトコル経由でリモートのデータセットの読み取りと書き込みを行えます。 このインテグレーションにより、ClickHouse は外部の Flight 対応サーバーと、列指向の Arrow フォーマットで高性能にやり取りできます。

テーブルの作成

エンジンパラメータ
  • host:port — リモート Arrow Flight サーバー のアドレス。ポートが省略された場合は、デフォルトのポート 8815 が使用されます。String。
  • dataset_name — Flight server 上のデータセットの識別子 (arrow_flight_request_descriptor_type 設定に応じて、PATH ディスクリプタとして、または SELECT * クエリで使用されます) 。String。
  • username — HTTP Basic 認証で使用するユーザー名。String。
  • password — HTTP Basic 認証で使用するパスワード。String。
username と password が省略された場合、認証は使用されません (これは Arrow Flight サーバー 側で認証なしのアクセスが許可されている場合にのみ機能します) 。 カラム一覧は省略可能です — 省略した場合、スキーマは GetSchema を介してリモート Arrow Flight サーバー から推論されます。

名前付きコレクション

このエンジンは、接続パラメータを保存するための名前付きコレクションに対応しています。
名前付きコレクション のパラメータ:

設定

  • arrow_flight_request_descriptor_type — データセット名を Flight server にどの形式で送信するかを制御します。設定可能な値: path (デフォルト。PATH ディスクリプタとして送信) または command (SELECT * FROM <dataset> を含む CMD ディスクリプタとして送信) 。SQL コマンドを受け取る Flight server (例: Dremio) の場合は、command を使用してください。
  • arrow_flight_request_timeout_sec — 1 回の Arrow Flight リクエストに対するタイムアウト (秒) です。デフォルトは 300 です。このタイムアウトはリクエスト全体に適用されます。つまり SELECT の場合は、最初のレコードバッチを受け取るまでの待機時間だけでなく、結果ストリーム全体が対象になります。0 を指定するとタイムアウトは無効になります。この場合、Flight server がリクエストを受け付けたまま応答しないと、接続が閉じられるまでクエリはブロックされたままになります。

使用例

リモートの Arrow Flight サーバーからのデータの読み取り:
リモートの Arrow Flight サーバーにデータを挿入する:

注記

  • CREATE TABLE ステートメントでカラムを指定する場合は、Flight server が返すスキーマと一致している必要があります。
  • カラムを省略した場合、スキーマはリモートサーバーから自動的に推論されます。
  • 読み取り (SELECT) と書き込み (INSERT) の両方をサポートしています。
  • arrow_flight_request_descriptor_type 設定では、データセット名を PATH ディスクリプタとして送信するか、SELECT * クエリをラップした CMD ディスクリプタとして送信するかを制御します。

関連項目