- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果它们是平面 JSON 文档,Clickhouse 绝对可以从 Kafka 读取 JSON 消息。
我们在 Clickhouse 中用 kafka_format = 'JSONEachRow'
表示这一点。
这是我们目前使用它的方式:
CREATE TABLE topic1_kafka
(
ts Int64,
event String,
title String,
msg String
) ENGINE = Kafka
SETTINGS kafka_broker_list = 'kafka1test.intra:9092,kafka2test.intra:9092,kafka3test.intra:9092',
kafka_topic_list = 'topic1', kafka_num_consumers = 1, kafka_group_name = 'ch1',
kafka_format = 'JSONEachRow'
只要生产者将平面 JSON 发送到
topic1_kafka
就可以了。但并非所有生产者都发送平面 JSON,大多数应用程序生成嵌套的 JSON 文档,如下所示:
{
"ts": 1598033988,
"deviceId": "cf060111-dbe6-4aa8-a2d0-d5aa17f45663",
"location": [39.920515, 32.853708],
"stats": {
"temp": 71.2,
"total_memory": 32,
"used_memory": 21.2
}
}
不幸的是,上面的 JSON 文档与
JSONEachRow
不兼容,因此 ClickHouse 无法将 JSON 文档中的字段映射到表中的列。
CREATE TABLE topic1
(
ts Int64,
deviceId String,
location_1 Float64,
location_2 Float64,
stats_temp Float64,
stats_total_memory Float64,
stats_used_memory Float64
) ENGINE = MergeTree()
最佳答案
看起来曾经的方法是将“原始”数据作为字符串获取,然后在消费者物化 View 中使用 JSON functions 处理每一行。
WITH '{"ts": 1598033988, "deviceId": "cf060111-dbe6-4aa8-a2d0-d5aa17f45663", "location": [39.920515, 32.853708], "stats": { "temp": 71.2, "total_memory": 32, "used_memory": 21.2 }}' AS raw
SELECT
JSONExtractUInt(raw, 'ts') AS ts,
JSONExtractString(raw, 'deviceId') AS deviceId,
arrayMap(x -> toFloat32(x), JSONExtractArrayRaw(raw, 'location')) AS location,
JSONExtract(raw, 'stats', 'Tuple(temp Float64, total_memory Float64, used_memory Float64)') AS stats,
stats.1 AS temp,
stats.2 AS total_memory,
stats.3 AS used_memory;
/*
┌─────────ts─┬─deviceId─────────────────────────────┬─location──────────────┬─stats────────────────────────┬─temp─┬─total_memory─┬────────used_memory─┐
│ 1598033988 │ cf060111-dbe6-4aa8-a2d0-d5aa17f45663 │ [39.920513,32.853706] │ (71.2,32,21.200000000000003) │ 71.2 │ 32 │ 21.200000000000003 │
└────────────┴──────────────────────────────────────┴───────────────────────┴──────────────────────────────┴──────┴──────────────┴────────────────────┘
*/
备注:对于带有浮点数的数字,应使用 Float64 而不是 Float32(请参阅相关的
CH Issue 13962 )。
CREATE TABLE test_tuple_field
(
ts Int64,
deviceId String,
location Array(Float32),
stats Tuple(Float32, Float32, Float32)
) ENGINE = MergeTree()
ORDER BY ts;
INSERT INTO test_tuple_field FORMAT JSONEachRow
{ "ts": 1598033988, "deviceId": "cf060111-dbe6-4aa8-a2d0-d5aa17f45663", "location": [39.920515, 32.853708], "stats": [71.2, 32, 21.2]};
CREATE TABLE test_nested_field
(
ts Int64,
deviceId String,
location Array(Float32),
stats Nested (temp Float32, total_memory Float32, used_memory Float32)
) ENGINE = MergeTree()
ORDER BY ts;
SET input_format_import_nested_json=1;
INSERT INTO test_nested_field FORMAT JSONEachRow
{ "ts": 1598033988, "deviceId": "cf060111-dbe6-4aa8-a2d0-d5aa17f45663", "location": [39.920515, 32.853708], "stats": { "temp": [71.2], "total_memory": [32], "used_memory": [21.2] }};
关于json - 使用 ClickHouse 使用来自 Kafka 的嵌套 JSON 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63528287/
当我尝试通过 clickhouse 命令行连接到远程 clickhouse db 时:$ clickhouse-client -h some_ip.com --port 8123 -u some_us
1.概述 转载:ClickHouse 内部架构介绍 官方原文链接:https://clickhouse.yandex/docs/en/development/architecture/ ClickHo
我知道 ClickHouse 没有 ACID ,因此我不希望它有 D可用性 ACID性。但是,问题是,如果服务器崩溃,是否有可能丢失插入内容? 最佳答案 CH 不耐用。 您可以在硬件自发重新启动时丢失
我在 clickhouse 中有一个事件表(MergeTree),并且想同时运行很多小插入。然而,服务器变得过载且无响应。此外,一些插入物丢失了。 clickhouse错误日志中有很多记录: 01:4
也许我错过了一些简单的事情,但我无法使时间过滤工作。 这是我的示例查询: select toTimeZone(ts, 'Etc/GMT+2') as z from (select toDateTime
我们的 Clickhouse 服务器在峰值负载下运行小型查询时出现了几个异常: DB::Exception: Too much simultaneous queries. Maximum: 100
也许我错过了一些简单的事情,但我无法使时间过滤工作。 这是我的示例查询: select toTimeZone(ts, 'Etc/GMT+2') as z from (select toDateTime
1.概述 转载:ClickHouse 11.副本与分片 1. 副本 集群是副本和分片的基础,它将 clickhouse 的服务拓扑由单节点延伸到多个节点。 clickhouse 集群配置很灵活,既可以
1.概述 转载:【clickhouse】clickhouse 副本与分片 分片详解 clickhouse 中每个服务器节点都可以被称为一个 shard(分片)。 假设有 N 台服务器,每个服务器上都有
我阅读了类似的问题,可以通过使用窗口函数使其工作,但是,由于 ClickHouse 似乎不支持它们,我正在寻找替代解决方案。 给定像 (1, 5), (2, 3), (3, 8), (10, 15)
我们有一个适度的 clickhouse 集群,大约 30 个节点,并希望收集它的使用统计信息。我们希望使用针对系统表的预定查询来做到这一点,但使用普通查询只能获取您碰巧连接到的一个节点的信息,并且创建
我是 Clickhouse 的新手,正在尝试入门。我已经安装了能够在我的计算机(ubuntu 16.04)上使用它所需的所有软件包,但是当我使用 clickhouse-client 命令时,我得到以下
是否有任何命令/SQL 可以显示 ClickHouse 数据库中的表正在使用什么引擎? create table t (id UInt16, name String) ENGINE = Memory;
我对 Clickhouse 很陌生,我的第一次尝试似乎总是为 SELECT 生成这种输出: :) select * from test SELECT * FROM test ┌─s───┬───i─┐
我在 Windows 主机上的 docker 容器中运行 Clickhouse。我尝试创建一个帐户以使其成为管理员帐户。看起来 默认 用户没有创建其他帐户的权限。如何解决此错误并创建管理员帐户? do
有什么方法可以更改表并更改 clickhouse 中的列名称吗?我只发现更改了表名称,但没有以直接的方式更改单个列。 谢谢。 最佳答案 该功能已推出here进入 v20.4。 ALTER TABLE
我看到 clickhouse 为每个分区键(在每个节点中)创建了多个目录。 文档说目录名称格式是:分区ID_最小块号_最大块号_级别。 知道这里是什么水平吗? 一个节点(一个表)上的 347 个不同的
我对何时使用二级索引感到困惑。我有以下代码脚本来定义 MergeTree 表,该表有十亿行。 create table t_mt( id UInt8, name String, job Stri
我正在编写一个应用程序来绘制财务数据并与此类数据的实时源进行交互。由于任务的性质,可能会以一次一次交易的方式非常频繁地接收实时市场数据。我在本地使用数据库,而且我是唯一的用户。只有一个程序(我的中间件
在回答关于clickhouse的UDF的github ticket中,他们在2017年回答说不能在clickhouse中创建UDF。我想知道2020年现在有什么办法可以做到吗? 最佳答案 ClickH
我是一名优秀的程序员,十分优秀!