ClickHouseと外部データソースをJDBCで接続する
JDBCを使用するにはClickHouse JDBC Bridgeが必要であり、ローカルマシンでclickhouse-local
を使用してデータベースからClickHouse Cloudにデータをストリームする必要があります。詳細については、ドキュメントの移行セクションにあるclickhouse-localの使用ページを参照してください。
概要: ClickHouse JDBC Bridgeは、jdbc テーブル関数またはJDBC テーブルエンジンと組み合わせて、JDBCドライバーが利用可能な任意の外部データソースからClickHouseにデータをアクセスできるようにします:

ClickHouse JDBC Bridgeを使用すると、複数の外部データソースに対して並行してリアルタイムでClickHouse上で分散クエリを実行することができます。
このレッスンでは、ClickHouseを外部データソースに接続するためにClickHouse JDBC Bridgeをインストール、設定、および実行する方法を示します。このレッスンでは、外部データソースとしてMySQLを使用します。
さあ、始めましょう!
ClickHouse JDBC Bridgeをローカルにインストールする
最も簡単なClickHouse JDBC Bridgeの使用方法は、ClickHouseが動作しているのと同じホストにインストールして実行することです:
ClickHouseが動作しているマシンのUnixシェルに接続し、ClickHouse JDBC Bridgeをインストールするためのローカルフォルダを作成しましょう。そのフォルダの名前や場所はお好みで決めてください:
mkdir ~/clickhouse-jdbc-bridge
次に、最新版のClickHouse JDBC Bridgeをそのフォルダにダウンロードします:
cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jar
MySQLに接続できるように、名前付きデータソースを作成します:
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.json
次に、以下の構成をファイル ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json
にコピー&ペーストできます:
{
"mysql8": {
"driverUrls": [
"https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar"
],
"jdbcUrl": "jdbc:mysql://<host>:<port>",
"username": "<username>",
"password": "<password>"
}
}
上記の設定ファイルには
- データソースの名前は自由に設定できます。ここでは
mysql8
を使用しました。 jdbcUrl
の値には、実行中のMySQLインスタンスに合わせて<host>
と<port>
を適切な値に置き換える必要があります(例:"jdbc:mysql://localhost:3306"
)<username>
と<password>
をMySQLのクレデンシャルに置き換える必要があります。パスワードを使用しない場合は、上記の設定ファイルから"password": "<password>"
の行を削除できます。driverUrls
の値では、MySQL JDBCドライバーの最新バージョンをダウンロードできるURLを指定しました。これですべてです。ClickHouse JDBC BridgeはそのJDBCドライバーを自動的に(OS特定のディレクトリに)ダウンロードします。
これでClickHouse JDBC Bridgeを開始する準備が整いました:
cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar
ClickHouse JDBC Bridgeをフォアグラウンドモードで開始しました。ブリッジを停止するには、上記のUnixシェルウィンドウをフォアグラウンドにしてCTRL+C
を押すことができます。
ClickHouseからJDBC接続を使用する
ClickHouseは、jdbc テーブル関数またはJDBC テーブルエンジンを使用してMySQLデータにアクセスできます。
以下の例を実行する最も簡単な方法は、例をコピーしてclickhouse-client
またはPlay UIに貼り付けることです。
- jdbc テーブル関数:
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');
jdbc テーブル関数の最初のパラメーターとして、上記で設定した名前付きデータソースの名前を使用しています。
- JDBC テーブルエンジン:
CREATE TABLE mytable (
<column> <column_type>,
...
)
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;
jdbc エンジンクロースの最初のパラメーターとして、上記で設定した名前付きデータソースの名前を使用しています。
ClickHouse JDBCエンジンテーブルのスキーマと接続されたMySQLテーブルのスキーマは一致している必要があります。例として、カラム名と順序が同じであり、カラムのデータ型が互換性がある必要があります。
外部からClickHouse JDBC Bridgeをインストールする
分散ClickHouseクラスター(複数のClickHouseホストを持つクラスター)の場合、ClickHouse JDBC Bridgeを専用のホストにインストールして実行するのが理にかなっています:

ClickHouse JDBC Bridgeを外部にインストールするためには、以下の手順を実行します:
このガイドのセクション1で説明されている手順に従って、専用のホストにClickHouse JDBC Bridgeをインストール、設定、および実行します。
各ClickHouseホストで、ClickHouseサーバー設定に次の設定ブロックを追加します(選択した設定形式に応じて、XMLまたはYAMLバージョンを使用してください):
- XML
- YAML
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>
jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019
JDBC-Bridge-Host
を専用のClickHouse JDBC Bridgeホストのホスト名またはIPアドレスに置き換える必要があります- デフォルトのClickHouse JDBC Bridgeポート
9019
を指定しました。他のポートを使用する場合は、上記の設定をそれに応じて調整する必要があります