Clickhouse中的实例化视图未填充

时间:2018-07-20 11:33:45

标签: apache-kafka clickhouse

我目前正在从事一个项目,该项目需要从Kafka主题(JSON格式)中提取数据,并将其直接写入Clickhouse。我遵循了Clickhouse documentation中建议的方法:

第1步:创建了一个Clickhouse使用者,该使用者可以写入表格(例如,level1)。

第2步:我对“ level1”执行了选择查询,它给了我一系列结果,但并不是特别有用,因为它只能读取一次。

第3步:我创建了一个物化视图,该视图将来自引擎(级别1)的数据转换为原始数据(例如,级别2)。在写入“ level2”时,聚合处于一天级别(通过将level1中的时间戳转换为日期时间来完成)。

因此,“ level2”中的数据:-天+“ level1”中的所有列

我打算将此视图(级别2)用作将来任何聚合(例如,级别3)的基础

问题1:正在创建“ level2”,但未在其中填充数据,即,当我在视图上执行基本的select查询(从level2限制10中选择*)时,输出为“集合中有0行”。

是因为日级汇总,还是可能在一天结束时填充?我可以实时从“ level2”中提取数据吗?

问题2:是否可以从引擎“ level1”多次读取相同的数据?

问题3:是否可以在从kafka主题中读取内容时将Avro转换为JSON?还是Clickhouse可以将数据(以Avro格式)直接写入“ level1”而不进行任何转换?

编辑:从Kafka检索数据时,Clickhouse中存在延迟。必须在我的Clickhouse服务器的user.xml文件中制作changes(更改max_block_size)。

1 个答案:

答案 0 :(得分:0)

  

问题1:正在创建“ level2”,但未在其中填充数据,即,当我在视图上执行基本选择查询(从level2限制10中选择*)时,输出为“集合中有0行“。

这可能与kafka存储的默认设置有关,该默认设置总是开始使用最新偏移量的数据。您可以通过添加此行为来更改行为

<kafka>
    <auto_offset_reset>earliest</auto_offset_reset>
</kafka>

config.xml

  

问题2:是否可以从引擎“ level1”中多次读取相同的数据?

您最好避免直接从kafka存储中读取。您可以为“ level1”设置专用的物化视图M1,并使用它来填充“ level2”。然后从M1读取是可重复的。

  

问题3:在从kafka主题中读取内容时,是否可以将Avro转换为JSON?还是Clickhouse可以将数据(以Avro格式)直接写入“ level1”而不进行任何转换?

不是,尽管您可以尝试使用Cap'n Proto,它应该提供与Avro类似的性能,并且ClickHouse直接支持。