ClickHouse之导入Kafka数据

205 阅读1分钟
  • Kakfa中的数据导入到ClickHouse,一般通过Flume/Logstash等数据采集工具进行导入

  • 通过ClickHouse 的Kafka引擎

    具体步骤如下:

    1. 使用引擎创建一个 Kafka 消费者并作为一条数据流。
    2. 创建一个结构表。
    3. 创建物化视图,改视图会在后台转换引擎中的数据并将其放入之前创建的表中。
      CREATE TABLE queue (
         timestamp UInt64,
         level String,
         message String
       ) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
     ​
       CREATE TABLE daily (
         day Date,
         level String,
         total UInt64
       ) ENGINE = SummingMergeTree(day, (day, level), 8192);
     ​
       CREATE MATERIALIZED VIEW consumer TO daily
         AS SELECT toDate(toDateTime(timestamp)) AS day, level, count() as total
         FROM queue GROUP BY day, level;
     ​
       SELECT level, sum(total) FROM daily GROUP BY level;
    

通过kafka引擎创建的表,只能读取一次,表中数据会在读取之后立刻删除,因此,我们采用物化视图的方式,将kafka引擎对应表中数据通过物化视图导入到一张MergeTree类型的表中。这样数据就会源源不断的导入到数据表中。