Clickhouse Kafka主题加入:

时间:2019-03-06 10:05:09

标签: apache-kafka clickhouse

我有两个(和更多)Kafka主题,我需要加入他们。 我从博客/ StackOverflow上阅读的内容提出的问题。...两个选择:

1)将Clickhouse Kafka引擎/火花流两者都流式传输到一个单独的表,然后运行在Clickhouse中不推荐的联接?

2)用所有列构建一个表并使用Clickhouse Engine /火花流更新同一入口吗?

任何建议

2 个答案:

答案 0 :(得分:1)

和往常一样,它实际上取决于导入的数据类型和使用方式,但是我想说,在大多数情况下,最好将2个主题导入到一个表中(所以选择2)。从那里您将能够快速过滤和汇总记录。根据您要执行的查询,您应该使用适当的ORDER BY列导入数据,这将使您的查询快得多。

如果您提供有关要联接的数据模式的更多详细信息,我将给出更具体的答案。

答案 1 :(得分:1)

在ClickHouse中从Kafka获取数据的标准方法是使用Engine = Kafka和Materialized视图创建“源”表,然后使用ReplicatedMergeTree引擎将数据复制到最终表中。

您可以创建多个实例化视图,将其写入相同的目标表。


CREATE TABLE kafka_topic1 ( ... ) Engine=Kafka ...;

CREATE TABLE kafka_topic2 ( ... ) Engine=Kafka ...;

CREATE TABLE clickhouse_table ( ... ) Engine=MergeTree ...;

CREATE MATERIALIZED VIEW kafka_topic1_reader
  TO clickhouse_table
  AS SELECT * FROM kafka_topic1;

CREATE MATERIALIZED VIEW kafka_topic2_reader
  TO clickhouse_table
  AS SELECT * FROM kafka_topic2;