全球最快的 JSON 文件查询工具

news2024/11/18 15:44:28

图片

本文字数:1684;估计阅读时间:5分钟

审校:庄晓东(魏庄)

本文在公众号【ClickHouseInc】首发

图片

介绍

在 ClickHouse,我们热衷于基准测试和性能优化。所以当我第一次看到 Hacker News 上那篇“查询大型 JSON 文件的最快工具是用 Python 编写的”帖子时,我的第一个想法是——“但 clickhouse-local 不是用 Python 编写的”。让我们来看一下这个基准测试,证明 clickhouse-local 实际上是查询大型 JSON 文件的最快工具。

clickhouse-local

clickhouse-local 是一个单一的二进制文件,允许你使用 SQL 快速处理本地和远程文件,提供了无数据库的数据库功能。除了支持 ClickHouse 的所有功能外,它还支持多种文件格式,包括 JSON。下面我们尝试可视化 ClickHouse 集群、单个 ClickHouse 实例和 clickhouse-local 之间的区别:

图片

性能基准测试

SPySQL 的创建者 Daniel Moura 发布了一项作为 SPySQL 项目一部分的基准测试。该基准测试比较了几种命令行工具,重点是查询可以存储在标准机器磁盘上但可能无法完全放入内存的大文件。测试数据集使用了亚马逊书评数据集的 10GB 子集。基准测试中使用的工具包括 SPySQL、jq、trdsql、Miller、OctoSQL、spark-sql、Pandas 和 DSQ。基准测试主要包含 3 个挑战:

  • Map:

    为所有行计算一个新列(批量输入和输出都很大)。

    这代表了一种常见的 ETL 类任务,涉及数据清洗和丰富。

  • Aggregation/Reduce:

    计算一列所有行的平均值(只有输入很大)。

    适用于需要快速分析结果且想避免将数据加载到如 ClickHouse 这样的数据存储中的用户。

  • Subset/Filter:

    返回符合过滤条件的列的前 100 个值(只需要处理部分输入)。

    此测试评估工具快速采样文件的能力,代表用户在迭代查询前常执行的任务。

初步测试结果显示 SPySQL 是查询大型 JSON 文件的最快工具:

图片

但 Daniel 并不知道 clickhouse-local。为此,ClickHouse 最近引入了两个新功能,使处理 JSON 文件和复现此基准测试变得更加简单:支持半结构化数据存储和自动模式推断。后者允许 ClickHouse 从数据中推断列类型,因此用户无需指定 JSON 文件的结构和每个字段的类型,从而简化了语法并加速了入门体验。

在联系 Daniel 后,他迅速将 clickhouse-local 添加到他的基准测试中并更新了结果。令人惊讶的是,clickhouse-local 比之前的所有工具都快。OctoSQL 的一位开发人员(用 Go 编写)也要求根据最新改进更新基准测试,并取得了不错的结果。下图展示了更新后的基准测试结果。

Map 测试

图片

1GB 数据的测试结果

图片

聚合(reduce)测试

图片

1GB 数据的测试结果

图片

过滤(subset)测试

图片

1GB 数据的测试结果

图片

结果总结

图片

更新的结果已经发布在此。可以看到,clickhouse-local 在查询大型 JSON 文件时速度远超大多数其他工具,而 OctoSQL 在处理较小文件时表现优异。

这个基准测试并不完美。每个查询只运行一次,因此可能会有波动,用户在本地硬件上重现结果时可能会发现运行之间的明显差异。结果也可能由于硬件和操作系统的差异而有所不同。最后,Daniel 在过滤查询中故意没有使用 ORDER BY 子句。虽然这可能导致不同工具之间的结果不同,因为 SQL 并不强制默认顺序,但基准测试的目标是评估用户希望尽快对文件进行采样以及工具避免完全扫描的能力。这个测试对那些在满足 LIMIT 后支持早期终止并且不需要将整个文件加载到内存中的工具有利。

所以,下次你需要处理大型 JSON 文件时,就知道该用哪个工具了!

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

图片

​​联系我们

手机号:13910395701

邮箱:Tracy.Wang@clickhouse.com

满足您所有的在线分析列式数据库管理需求

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 JWT 进行身份验证

一、JWT 介绍 JWT 本质上就是一组字串,通过(.)切分成三个为 Base64 编码的部分: Header : 描述 JWT 的元数据,定义了生成签名的算法以及 Token 的类型。Payload : 用来存放实际需要传递的数据Signature(签…

【系统架构师】-收官整理-已考过

目录 1、在2023年11月第一次考试 2、在2024年5月第二次考试 3、备考过程 3.1、综合知识 3.2、案例分析 3.3、论文 我是从2023年8月开始备考架构师考试,一边工作,一遍抽空学习(并没有参加培训)。 1、在2023年11月第一次考试…

word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法

问题描述:word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。设置了页边距也不管用。 如图1 图1 解决: 点击“视图”——“多页”——“单页”,即可。如图2操作 图2 结果展示:如图3 图3

Springboot小型仪器公司生产管理系统-计算机毕业设计源码031853

摘 要 本论文主要论述了如何使用java语言开发一个Springboot小型仪器公司生产管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述小型仪器公司生产管理系统…

SV std::randomize使用技巧与指南

通过以下例子学习: 其它: 里面夹杂: if(en1) { ((a>b)&&(b>c) || (e>f)&&(j>k)); } else { }

如何提高搜索点击率:五个利用ChatGPT创造吸引眼球标题的小技巧

在当今信息爆炸的时代,如何让自己的文章在海量信息中脱颖而出,是每个内容创作者都在思考的问题。尤其是当读者面对无数个搜索结果时,标题成为吸引他们点击的第一步。那么,如何才能写出吸引眼球的标题,从而提高搜索点击…

星戈瑞DSPE-FITC在细胞标记中的应用

细胞标记是生物医学研究中的一项基本技术,它允许研究者追踪和观察细胞的行为、分布以及与周围环境的相互作用。在众多的细胞标记方法中,DSPE-FITC因其独特的性质和应用范围而受关注。 DSPE-FITC的基本性质 DSPE-FITC是由二硬脂酰磷脂酰乙醇胺&#xff0…

【消息队列】RabbitMQ集群原理与搭建

目录 前言1、集群搭建1.1、安装RabbitMQ1.1.1、前置要求1.1.2、安装Erlang环境①创建yum库配置文件②加入配置内容③更新yum库④正式安装Erlang 1.1.3、安装RabbitMQ1.1.4、RabbitMQ基础配置1.1.5、收尾工作 1.2、克隆VMWare虚拟机1.2.1、目标1.2.2、克隆虚拟机1.2.3、给新机设…

Mybatis 到 MyBatisPlus

Mybatis 到 MyBatisPlus Mybatis MyBatis(官网:https://mybatis.org/mybatis-3/zh/index.html )是一款优秀的 持久层 (ORM)框架,用于简化JDBC的开发。是 Apache的一个开源项目iBatis,2010年这…

vscode关于java扩展

包含IDEA同款代码提示,vscode的debug,除了创建类要手动新建java文件以外,其他都还行,满足初学者要求。

免费插件集-illustrator插件-Ai插件-测量路径周长

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行测量路径周长处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&…

【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解

最终效果 文章目录 最终效果前言存储位置信息存储更多数据存储场景信息持久化存储数据 前言 前面写过小型游戏存储功能: 【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解(包含数据安全处理方案的加密解密) 这次做一个针…

HarmonyOS应用开发学习经验

一、HarmonyOS学习官网 开发者能力认证 HarmonyOS应用开发者基础认证6月之前的学习资源官网已经关闭过期,大家不要慌,官方更新了最新资源,但是,对于之前没有学习完的学员不友好,存在知识断片的现象,建议官…

小程序中this(1)

}, onLoad: function() {}, }) 此时经过编译后模拟器的显示: 这里都容易理解,当点击了button按钮后,触发点击事件执行testfun函数,将test02设置为8,如图: 通过this.data.test028这种方式直接赋值可以吗&…

音乐创作与制作软件:Studio One 6.6.1中文版安装激活使用指南

音乐创作与制作软件:Studio One 6.6.1 简介 StudioOne 的设计核心是易于使用。十年来,它已将久经考验的录音棚模型与当今以节拍和循环为导向的制作过程无缝地结合在一起,因此您可以比以往更快地将音乐创意带入声音现实。高效的单屏幕界面可…

酷开系统丨酷开科技AI赋能数字大屏,开启智能家居新纪元

在当今数字化时代,人工智能(AI)技术的崛起无疑为科技领域带来了革命性的变化。酷开科技,正以其独特的"AI数字大屏"战略,将创新理念转化为现实,引领行业发展新潮流。 酷开科技的智能电视操作系统…

芯片设计公司供应链软件管理包括哪些内容

芯片设计公司的供应链软件管理是一个复杂而精细的过程,它涵盖了从原材料采购到最终产品交付的各个环节。以下是关于芯片设计公司供应链软件管理内容的科普介绍。 首先,供应链软件管理的起点是原材料采购。这部分内容主要关注确保供应商提供高质量、符合设…

【C++】相机标定源码笔记-相机内参标定类

相机内参标定类 该代码是一个关于摄像头内参处理类的实现。它主要做了以下几件事情: 1. 提供读取和保存相机内参的功能。 2. 允许用户设置一系列参数(如图像尺寸、棋盘格尺寸等)。 3. 支持从图像中检测棋盘格角点,并根据检测到的角…

每台电脑的ip地址是随机改动的吗

在数字化快速发展的今天,互联网已成为我们生活和工作的重要组成部分。当我们使用电脑上网时,IP地址作为电脑在网络中的唯一标识,起到了至关重要的作用。然而,很多人对于IP地址的分配和变化存在疑问,尤其是关于每台电脑…

上涨至13.6分!当之无愧的顶级期刊,影响因子“狂飙”,门槛较低,2个月可录!

本期解析 1、2024年6月20日,科睿唯安正式公布2024年度《期刊引证报告》。 2、本次主要解析Elsevier旗下一本TOP顶刊,期刊表现优秀,在最新的影响因子更新中由12.8上涨至13.6,是一本妥妥评职高分宝刊!接下来看看它是否…