【问题标题】:Materialised View in Clickhouse not populatingClickhouse 中的物化视图未填充
【发布时间】:2018-12-28 17:04:04
【问题描述】:

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

第 1 步:创建一个可写入表(例如 level1)的 clickhouse 消费者。

第 2 步:我在 'level1' 上执行了一个选择查询,它给了我一组结果,但并不是特别有用,因为它只能读取一次。

第 3 步:我创建了一个物化视图,它从引擎 (level1) 转换数据并将其放入之前创建的表中(例如,level2)。在写入“level2”时,聚合是在一天级别的(通过将 level1 中的时间戳转换为日期时间来完成)。

因此,'level2' 中的数据:- day + 'level1' 中的所有列

我打算将此视图 (level2) 用作任何未来聚合的基础(例如,在 level3)

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

是因为一天级别的聚合,它可能会在一天结束时填充吗?我可以从“level2”实时提取数据吗?

问题 2: 有没有办法从我的引擎“level1”中多次读取相同的数据?

问题 3: 有没有办法在阅读 kafka 主题时将 Avro 转换为 JSON?或者Clickhouse可以直接将数据(Avro格式)写入'level1'而不进行任何转换?

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

【问题讨论】:

    标签: apache-kafka clickhouse


    【解决方案1】:

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

    这可能与 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 直接支持它。

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 2021-12-06
      • 2016-06-24
      • 1970-01-01
      • 2021-06-13
      • 2021-07-24
      • 2021-10-09
      • 2019-01-28
      • 2018-11-10
      相关资源
      最近更新 更多