我有两个(和更多)Kafka主题,我需要加入他们。 我从博客/ StackOverflow上阅读的内容提出的问题。...两个选择:
1)将Clickhouse Kafka引擎/火花流两者都流式传输到一个单独的表,然后运行在Clickhouse中不推荐的联接?
2)用所有列构建一个表并使用Clickhouse Engine /火花流更新同一入口吗?
任何建议
答案 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;