-
Kakfa中的数据导入到ClickHouse,一般通过Flume/Logstash等数据采集工具进行导入
-
通过ClickHouse 的Kafka引擎
具体步骤如下:
- 使用引擎创建一个 Kafka 消费者并作为一条数据流。
- 创建一个结构表。
- 创建物化视图,改视图会在后台转换引擎中的数据并将其放入之前创建的表中。
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类型的表中。这样数据就会源源不断的导入到数据表中。