【问题标题】:Unable to see data loaded in clickhouse if i restart my clickhouse server如果我重新启动 clickhouse 服务器,则无法看到 clickhouse 中加载的数据
【发布时间】:2018-07-04 07:45:39
【问题描述】:

我正在使用 clickhouse 数据库加载一些实时指标。所以我用引擎 kafka 创建了一个表,并在其中加载了大约 100 万个指标……但问题是如果我重新启动我的 clickhouse 客户端并且如果我从表名中选择 * 我无法看到其中加载的数据..我怎样才能看到该数据?

CREATE TABLE cpuinfo (timestamp String, namespace String, data Float, unit String, plugin_running_on String, version UInt64, last_advertised_time String) ENGINE = Kafka('10.224.54.99:9092', 'cpuout', 'group1', 'JSONEachRow');

上表我创建并开始收集数据如下

select * from cpuinfo

如果我重新启动我的 clickhouse 客户端,然后执行相同的命令 select * from cpuinfo 我无法看到加载的数据...如何查看数据?

【问题讨论】:

    标签: mysql apache-kafka clickhouse


    【解决方案1】:

    您是否按照documentation 中的建议对 Kafka 表使用 MATERIALIZED VIEW?

    如果您使用 MATERIALIZED VIEW,那么来自 Kafka 的所有消息都将插入到视图中。所以在这种情况下,您应该从视图中选择,而不是从 Kafka 表中选择。

    如果您不使用 MATERIALIZED VIEW,那么您只能从 kafka 表中查询一次新消息。当您再次查询时,查询将不会再次返回相同的消息,因为它已经从 Kafka 消费过一次。

    如果您需要聚合数据,请使用 SummingMergeTree,如示例中所示。 如果您更喜欢原始数据,则可以使用 MergeTree。

    时间戳列的类型是字符串。它的格式是什么? 我建议您解析时间戳并将其作为 unix 时间戳插入 Kafka。 然后你需要用 UInt64 类型的时间戳列重新创建表 cpuinfo。

    如果您这样做,那么您可以使用以下语句创建视图:

    CREATE TABLE cpuinfo_t (
      timestamp UInt64,
      namespace String, 
      data Float, 
      unit String, 
      plugin_running_on String, 
      version UInt64, 
      last_advertised_time String, 
      DAY Date) 
    ENGINE = MergeTree 
    PARTITION BY DAY 
    ORDER BY (DAY, timestamp) SETTINGS index_granularity = 8192;
    
    CREATE MATERIALIZED VIEW cpuinfo_view TO cpuinfo_t AS 
    SELECT 
      timestamp, 
      namespace, 
      data, 
      unit, 
      plugin_running_on, 
      version, 
      last_advertised_time, 
      toDate(toDateTime(timestamp)) AS DAY 
    FROM cpuinfo;
    

    【讨论】:

    • 感谢您的回复....我没有正确理解他们在文档中给出的示例....如何为问题中提到的上述 cpuinfo 表创建物化视图。 ..
    • 索引粒度定义了主键文件的稀疏性。在我发布的示例中,主键/索引是(DAY, timestamp)index_granularity = 8192  是大多数情况下建议的  值。你可以在这里阅读更多:clickhouse.yandex/docs/en/development/…medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324
    • 谢谢....所以现在如果我开始从 kafka 收集数据,并且如果我想在 clickhouse 上查看该数据,我的查询应该是什么 ` select * from cpuinfo_view ` 或者我需要从哪个表拿那个
    • 是的,你应该从cpuinfo_view中选择
    • 但是如果我这样做 select * from cpuinfo_view 什么都没有,我会得到什么......但如果我这样做 select * from cpuinfo 那里我可以看到数据......我怎样才能看到 cpuinfo_view 中的数据?保存
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2018-11-07
    • 2019-08-29
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多