如果我重新启动我的 clickhouse 服务器,则无法看到加载到 clickhouse 中的数据
Unable to see data loaded in clickhouse if i restart my clickhouse server
我正在使用 clickhouse 数据库加载一些实时指标..所以我用引擎 kafka 创建了一个 table 并加载了大约 100 万个指标...但问题是如果我重新启动我的 Clickhouse 客户端,如果我执行 select * from tablename,我将无法看到其中加载的数据。我如何才能看到该数据?
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');
以上table我创建并开始收集数据如下
select * from cpuinfo
如果我重新启动我的 clickhouse 客户端然后执行相同的命令select * from cpuinfo
我无法看到加载的数据...我如何才能看到数据?
您是否按照 documentation 中的建议为 Kafka table 使用了 MATERIALIZED VIEW?
如果您使用 MATERIALIZED VIEW,那么来自 Kafka 的所有消息都将被插入到视图中。所以在这种情况下你应该 select 来自视图,而不是来自 Kafka table.
如果您不使用 MATERIALIZED VIEW,那么您只能从 kafka table 查询一次新消息。当您再次查询时,查询将不会再次 return 相同的消息,因为它已经从 Kafka 消费过一次。
如果您需要汇总数据,请像示例中那样使用 SummingMergeTree。
如果您更喜欢原始数据,那么您可以使用 MergeTree。
时间戳列的类型为String。它的格式是什么?
我建议你解析时间戳并将其作为 unix 时间戳插入到 Kafka 中。
然后你需要重新创建 table cpuinfo with timestamp column with type UInt64.
如果执行此操作,则可以使用以下语句创建视图:
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;
我正在使用 clickhouse 数据库加载一些实时指标..所以我用引擎 kafka 创建了一个 table 并加载了大约 100 万个指标...但问题是如果我重新启动我的 Clickhouse 客户端,如果我执行 select * from tablename,我将无法看到其中加载的数据。我如何才能看到该数据?
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');
以上table我创建并开始收集数据如下
select * from cpuinfo
如果我重新启动我的 clickhouse 客户端然后执行相同的命令select * from cpuinfo
我无法看到加载的数据...我如何才能看到数据?
您是否按照 documentation 中的建议为 Kafka table 使用了 MATERIALIZED VIEW?
如果您使用 MATERIALIZED VIEW,那么来自 Kafka 的所有消息都将被插入到视图中。所以在这种情况下你应该 select 来自视图,而不是来自 Kafka table.
如果您不使用 MATERIALIZED VIEW,那么您只能从 kafka table 查询一次新消息。当您再次查询时,查询将不会再次 return 相同的消息,因为它已经从 Kafka 消费过一次。
如果您需要汇总数据,请像示例中那样使用 SummingMergeTree。 如果您更喜欢原始数据,那么您可以使用 MergeTree。
时间戳列的类型为String。它的格式是什么? 我建议你解析时间戳并将其作为 unix 时间戳插入到 Kafka 中。 然后你需要重新创建 table cpuinfo with timestamp column with type UInt64.
如果执行此操作,则可以使用以下语句创建视图:
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;