DoubleCloud 即将停止服务。利用限时免费迁移服务迁移到 ClickHouse。立即联系我们 ->->

博客 / 产品

ClickHouse 2022年4月新闻:JSON,JSON,JSON

author avatar
Christoph Wurm
2022年4月14日

来自阿姆斯特丹的问候,在这个时候,郁金香正盛开。这是您关于 ClickHouse 的 4 月份新闻。我们发布了一个新版本,其中包含一个非常非常非常令人兴奋的功能(这是否有点过于兴奋?我们不这么认为!),ClickHouse 网站上的新内容等等。让我们深入了解一下!

此外,下一个版本即将发布,我们邀请您参加发布网络研讨会,在发布当天直接从 ClickHouse 团队了解新功能。

ClickHouse Cloud 候补名单现已开放!

与 ClickHouse Inc. 交流过的用户都知道,我们一直在努力开发全球首个 ClickHouse 的无服务器托管云产品。众所周知,开始使用 ClickHouse 很容易(它是一个单一的二进制文件,因此您只需下载并在任何地方运行它),但大规模运行 ClickHouse 并进行复制和分片并不那么简单。

我们正在将 ClickHouse Cloud 作为“无服务器”服务开发,这意味着您无需配置任何实例并选择 CPU、内存和存储配置。所有这些都在后台为您处理。如果您觉得这很有趣,请在此处注册 ClickHouse Cloud 的候补名单此处

ClickHouse 入门

说到新的网站内容,请查看这段关于 ClickHouse 入门的 25 分钟视频。ClickHouse 越来越受欢迎,许多新手第一次使用它。为了帮助他们,我们试图将开始使用 ClickHouse 所需的所有重要信息浓缩到一个视频中,时长相当于喝一杯咖啡的时间(除非您只喝浓缩咖啡)。请点击此处收听,并将其发送给您尚未了解 ClickHouse 的朋友!

ClickHouse v22.3

3 月 17 日,我们发布了 ClickHouse 22.3 LTS,其中包含许多新功能(特别是我们非常兴奋的一个)。它也是一个长期支持 (LTS) 版本,因此您可以在未来一年中使用它,我们将继续修复错误。如果您不打算每月使用最新版本升级 ClickHouse,则应使用 LTS 版本!

22.3 中有什么

  1. JSON 是一种新的数据类型,允许您将任何 JSON 文档直接导入到列中。在后台,ClickHouse 将创建动态子列来存储数据,因此访问速度仍然很快。

    从历史上看,当在 ClickHouse 中存储 JSON 文档时,您会为每个字段创建表列。如果您事先知道数据的外观,这可以很好地工作。但是对于 JSON,情况通常并非如此,尤其是在例如来自不同应用程序和服务的日志的情况下。为了将这种“半结构化”数据导入 ClickHouse,通常需要开发涉及数组和物化列的复杂数据架构

    不再需要!现在所有这些都可以放入一个 JSON 类型列中。这是一个非常强大的功能,我们对此感到非常兴奋,所以请尝试一下,并告诉我们您的想法。

  2. ARM 构建现在可作为Docker 镜像使用!例如,您可以使用 Docker 在 macOS 上运行 ClickHouse,使用docker run clickhouse/clickhouse-server。我们 CI 中的 ARM 构建现在已通过所有功能测试。此外,您现在可以获得 deb、rpm、apk 和二进制包。

  3. S3 磁盘 作为 ClickHouse 的存储现在也已完全测试。您可以在 ClickHouse 配置文件的<storage_configuration> 部分中使用 S3 进行存储配置。注意:我们仍在解决一些性能问题。

  4. Hive 表函数 允许您直接读取 Apache Hive 表中的数据,并将其与 ClickHouse 中的数据结合起来。或者使用INSERT INTO clickhouse_table SELECT * FROM hive(...)将数据插入 ClickHouse。

有关更多详细信息(包括现场演示),请查看此处网络研讨会的录制此处。此外,注册参加 4 月 21 日星期四上午 9 点 PST/下午 5 点 GMT 举行的 22.4 版本 4 月份发布网络研讨会。

希望您喜欢此版本,并请升级!

本月查询:JSON,JSON,JSON

让我们试用一下新的 JSON 数据类型

SET allow_experimental_object_type = 1;
CREATE TABLE json (o JSON) ENGINE = Memory
INSERT INTO json VALUES ('{"a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')
SELECT o.a, o.b.c, o.b.d[3] FROM json

select 语句将返回 1、2、3,您可以看到 ClickHouse 中的 JSON 对象如何支持嵌套对象和数组,以及查询语法多么简洁。

您可能已经在某个文件中有 JSON 数据。要将其插入到 ClickHouse 的 JSON 列中,您可以运行类似以下内容

CREATE TABLE logs (message JSON) ENGINE = MergeTree ORDER BY tuple()
INSERT INTO logs SELECT json FROM file(log.json.gz', JSONAsString)

注意我们如何使用JSONAsString格式来防止 ClickHouse 将每个 JSON 字段视为其自己的列(即使使用新的 JSON 数据类型,如果您的数据结构化且字段已知,您仍应考虑这样做)。

另请注意,我们无法按数据中的任何内容对 MergeTree 表进行排序,因为使用 JSON,我们还无法事先知道数据的结构。对于大型数据集,没有排序键是不好的!在实践中,我们通常希望将 JSON 文档中的一些重要且常见的字段提取到其自己的列中。例如,时间戳

CREATE TABLE logs (
	timestamp DateTime,
	message JSON
) ENGINE = MergeTree ORDER BY timestamp


INSERT INTO logs
SELECT parseDateTimeBestEffort(JSONExtractString(json, 'timestamp')), json
FROM file('access.json.gz', JSONAsString)

最后,当显示 JSON 列时,ClickHouse 默认只显示字段值(因为在内部,它表示为元组)。您可以像这样显示字段名称

SELECT message FROM logs FORMAT JSONEachRow
SETTINGS output_format_json_named_tuples_as_objects = 1

请尝试一下这种新的数据类型,并告诉我们您的想法!

阅读角

我们一直在阅读什么

  1. 使用 ClickHouse 构建粘贴服务:Alexey 探讨了使用许多 ClickHouse 反模式构建类似于 Pastebin 的服务(该帖子于 4 月 1 日发布,但只有一半是开玩笑的,该服务实际上有效!)。
  2. ClickHouse 的国际妇女节:阅读每个月为您带来 ClickHouse 的女性的故事以及她们在科技领域的经历。
  3. 数据流的快速索引:BENOCS 正在使用 ClickHouse 收集和可视化全球大型电信公司的网络流量。
  4. ClickHouse 22.3 版本博客文章 – 了解有关我们的 22.3 版本以及其中包含的内容的更多信息。
  5. 新的 ClickHouse 用户:欢迎Swetrix Analytics。也添加你自己吧!

感谢阅读。我们下个月再见!

ClickHouse 团队

照片由Matthew WaringUnsplash上拍摄

分享此帖子

订阅我们的新闻

关注功能发布、产品路线图、支持和云产品信息!
正在加载表单...
关注我们
Twitter imageSlack imageGitHub image
Telegram imageMeetup imageRss image