メインコンテンツへスキップ

概要

この記事では、Kafka トピックから ClickHouse テーブルへデータを送信する手順を説明します。使用するのは Wiki の recent changes フィードで、これはさまざまな Wikimedia プロパティに加えられた変更を表すイベントストリームを提供します。手順は次のとおりです。
  1. Ubuntu で Kafka をセットアップする方法
  2. データストリームを Kafka トピックに取り込む
  3. トピックを購読する ClickHouse テーブルを作成する

1. Ubuntu で Kafka をセットアップ

  1. Ubuntu ec2 インスタンスを作成し、SSH で接続します:
  1. Kafka をインストールします (以下の手順を参照: https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/) :
  1. ZooKeeper を起動します。
  1. 新しいターミナルを開いて、Kafka を起動します:
  1. 3つ目のターミナルを開き、wikimedia という名前のトピックを作成します:
  1. 正常に作成されたことを、次の方法で確認できます:

2. Wikimedia Stream を Kafka に取り込む

  1. まず、いくつかのユーティリティが必要です。
  1. データは、最新の Wikimedia イベントを取得し、JSON データを抽出して Kafka トピックに送信する、巧妙な curl コマンドを使って Kafka に送られます。
  1. トピックを”describe”して確認できます:
  1. いくつかのイベントを取り込んで、すべてが正常に動作していることを確認しましょう。
  1. 前のコマンドを停止するには、Ctrl+c を押します。

3. データを ClickHouse に取り込む

  1. 取り込まれるデータは以下のようになります。
  1. Kafka テーブルエンジンを使用して Kafkaトピックからデータを取り込む必要があります:
  1. 何らかの理由で、Kafkaテーブルエンジンがパブリックな ec2 URL をプライベート DNS 名に変換してしまうようなので、ローカルの/etc/hostsファイルにもそれを追加する必要がありました。
  1. Kafkaテーブルから読み取るには、設定を有効にするだけです。
wikiQueue テーブルで定義されたカラムに基づいて、行データは適切にパースされた状態で返されるはずです:
  1. これらの受信イベントを保存するには、MergeTree テーブルが必要です。
  1. Kafka テーブルで insert が行われたときにトリガーされ、データを rawEvents テーブルに送る materialized view を定義しましょう:
  1. ほぼすぐに、データが rawEvents に取り込まれ始めるはずです:
  1. いくつかの行を確認してみましょう:
  1. どのようなイベントが入ってきているか見てみましょう:
現在の materialized view に連なる materialized view を定義しましょう。分単位の集計統計を追跡します。
  1. 結果を確認するには、-Merge 関数が必要です:
最終更新日 2026年6月25日