メインコンテンツへスキップ
Apache Beam は、開発者がバッチ処理とストリーム (継続的) データ処理パイプラインの両方を定義・実行できる、オープンソースの統一的なプログラミングモデルです。Apache Beam の柔軟性は、ETL (Extract, Transform, Load) 処理から複雑なイベント処理、リアルタイム分析まで、幅広いデータ処理シナリオに対応できる点にあります。 このインテグレーションでは、データ挿入の基盤レイヤーとして、ClickHouse 公式の JDBC コネクタ を利用します。

インテグレーションパッケージ

Apache Beam と ClickHouse をインテグレーションするために必要なパッケージは、Apache Beam I/O Connectors で保守・開発されています。これは、多くの一般的なデータストレージシステムやデータベース向けインテグレーションをまとめたバンドルです。 org.apache.beam.sdk.io.clickhouse.ClickHouseIO の実装は、Apache Beam repo 内にあります。

Apache Beam ClickHouse パッケージの設定

パッケージのインストール

以下の依存関係をパッケージ管理フレームワークに追加します。
推奨される Beam バージョンClickHouseIO コネクタは、Apache Beam バージョン 2.59.0 以降で使用することを推奨します。 それ以前のバージョンでは、コネクタの機能が完全にサポートされない可能性があります。
アーティファクトは公式 Maven リポジトリで確認できます。

コード例

次の例では、input.csv という名前のCSVファイルを PCollection として読み込み、定義したスキーマを使って Row オブジェクトに変換し、ClickHouseIO を使用してローカルの ClickHouse インスタンスに挿入します。

サポートされているデータ型

ClickHouseIO.Write パラメーター

以下のセッター関数を使用して、ClickHouseIO.Write の設定を調整できます。

制限事項

コネクタを使用する際は、以下の制限事項に注意してください。
  • 現時点でサポートされているのは Sink 操作のみで、コネクタは Source 操作には対応していません。
  • ClickHouse は、ReplicatedMergeTree または ReplicatedMergeTree を基盤とする Distributed テーブルへの挿入時に重複排除を実行します。レプリケーションがない場合、通常の MergeTree への挿入では、挿入が失敗したあと再試行で成功すると、重複が発生する可能性があります。ただし、各ブロックはアトミックに挿入され、ブロックサイズは ClickHouseIO.Write.withMaxInsertBlockSize(long) を使用して設定できます。重複排除は、挿入されたブロックのチェックサムを用いて行われます。重複排除の詳細については、Deduplication および Deduplicate insertion config を参照してください。
  • コネクタは DDL ステートメントを一切実行しないため、ターゲットテーブルは挿入前にあらかじめ存在している必要があります。
最終更新日 2026年6月19日