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

图片

本文字数: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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

aspectj:AOP编程备忘录-切面定义的注意事项

AOP编程时定义切面时需要注意的事 Around 以Around注解拦截构造方法(Constructor)时切面定义只能用call方式而不能是execution,否则 ProceedingJoinPoint.proceed()返回的是null,得不到构造的实例。 execution execution切入点要修改对象内部&#x…

惊!两个样本的简单分组实验登上了园艺学顶级期刊

在真核细胞中,基因组DNA被包装成高度组织化的核蛋白复合体,称为染色质。染色质的基本单元是核小体,它由一个核心组蛋白八聚体(组蛋白H2A、H2B、H3和H4各两个)组成,其周围缠绕着大约146个碱基对的DNA。这些组…

汇编语言作业(九)

目录 一、实验目的 二、实验内容 三&#xff0e;实验步骤以及结果 1. 从键盘缓冲区中接受一个英文字符串&#xff08;长度<50), 如“AB123cdE*87fGabFZ”&#xff0c;要求将其大写转小写&#xff0c;小写转大写后存入以result地址开始的缓冲区中&#xff0c;并输出。 2…

无线WiFi毫米波雷达传感器成品,智能照明人体感应开关,飞睿智能点亮智慧生活

在智能科技飞速发展的今天&#xff0c;我们的生活正被各种智能设备所包围&#xff0c;其中智能照明作为智能家居的重要组成部分&#xff0c;正逐渐改变着我们的生活方式。而在这背后&#xff0c;有一个默默工作的“小助手”——飞睿智能毫米波雷达传感器&#xff0c;它就像智能…

kettle创建资源库无法登录问题

问题&#xff1a;You dont seem to be getting a connection to the server. Please check the path youre using and make sure the server is up and running. 1. 删除资源库 2.删除数据库中R_开头的表 3.重新创建资源库连接&#xff0c;查看是否成功产生表 4.创建成功&…

InVEST实践及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中应用

白老师&#xff08;研究员&#xff09;&#xff1a;长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作,重点围绕生物多样性、生态系统服务与价值等&#xff0c;构建生物地球化学模型和评价指标体系&#xff0c;为城市、区域和自然保护区的可持续发展和生态环…

AI绘画的10种变现方法,逼你躺平挣钱

AI绘画到底能多挣钱&#xff01; 马上看证据&#xff0c;知乎和其它平台的收益&#xff0c;AI绘画挣的稿费&#xff0c;还有某音某瓜的稿费。 都是有AI绘画的一大功劳&#xff01; 接下来介绍AI绘画的十种挣钱方法&#xff0c;有折腾的收益&#xff0c;也有躺平的收益&#x…

SQL Server 2022从入门到精通

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

基于springboot+vue的梦幻玩具乐园的设计与实现(在线购物平台)

需要源码和论文的小伙伴可以私信博主&#xff08;有偿&#xff09; ​​​​​课题目的与意义 随着互联网的不断普及与在线销售平台的迅猛发展&#xff0c;在线购物日益受到广大消费者的青睐与追捧。通过构建基于Spring BootVue的在线玩具商城&#xff0c;可以为玩具制造商、…

财务RPA的优势——探讨财务RPA带来的效率和准确性优势

企业财务是企业信息化和数字化转型过程中的重要一环&#xff0c;随着企业的不断发展壮大&#xff0c;财务业务往来更加频繁&#xff0c;以往的财务管理运作模式高度依赖人工操作&#xff0c;已无法适应大量新的业务需求。RPA机器人流程自动化可以根据预设程序辅助人工处理大量重…

Spring的jar包下载(最新版6.0版本)

1.在Spring官网的projects下面点击spring-framework 2.进入github官网 3.进入github后往下滑&#xff0c;点击Spring Framework Artifacts 4.往下滑找到 点击 5.在左边先点击Artifacts&#xff0c;在右边找到 libs-snapshot&#xff0c;展开libs-snapshot&#xff08;之前其他…

2024第十三届中国PMO大会主持人介绍

全国PMO专业人士年度盛会 由PMO评论主办的2024第十三届中国PMO大会邀请了到十几位知名企业的PMO和项目管理专家来担任大会主持人。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 主持人介绍 肖杨&#xff0c;国际知名组织级项目管理专家&#xff0c;微薄之力…

吴恩达揭秘:编程Agent如何革新软件开发行业

作为 AI 领域的杰出人物&#xff0c;吴恩达教授对编程 Agent 的兴起表示了极大的兴趣。他认为&#xff0c;编程 Agent 有潜力通过自动执行繁琐的任务、提高代码质量和加速开发周期来彻底改变软件开发行业。 本文将深入探讨吴恩达对编程 Agent 的见解&#xff0c; 多代理系统质…

git 查看本地和远程分支

要查看 Git 仓库中的所有分支&#xff0c;可以使用以下命令&#xff1a; git branch执行该命令后&#xff0c;Git 会列出当前仓库中的所有分支&#xff0c;并在当前所在的分支前加上一个 * 标记。 如果你想查看远程仓库的分支&#xff0c;可以添加 -r 或 --remotes 选项&…

【ai】trition:tritonclient yolov4:部署ubuntu18.04

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 client代码远程部署在ubuntu18.04上 ubuntu18.04 创建yolov4-trition python=3.7 环境 (base) zhangbin@ub…

新鲜出炉的信息化一机两用方案

在信息化日益发展的今天&#xff0c;网络安全问题愈发凸显其重要性。尤其是在政府和企事业单位中&#xff0c;如何在保证业务流畅和工作效率的同时&#xff0c;确保信息高安全性&#xff0c;成为了一个亟待解决的问题。而“一机两用”政策&#xff0c;正是针对这一需求而提出的…

golang——Gin框架及路由介绍

一. 框架介绍 Gin是一个轻量级的Go语言Web框架&#xff0c;它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能&#xff0c;Gin成为Go语言中最受欢迎的Web框架之一。 特点&#xff1a; 快速和轻量&#xff1a;Gin框架的设计注重性能和效率&#xff0c;采用了一些优化措…

02-二进制转换,原码 反码 补码

二进制是什么? 为什么用二进制? 计算机底层只能识别二进制。 计算机底层只识别二进制是因为计算机内部的电子元件只能识别两种状态&#xff0c;即开和关&#xff0c;或者高电平和低电平。 二进制正好可以用两种状态来表示数字和字符&#xff0c;因此成为了计算机最基本的表示…

收银系统源码-千呼新零售2.0【宠物、养生、大健康行业解决方案】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物、中医养生、大健康等连锁店…

28. 深度学习中的损失函数:起源、分类及统一理解

在深度学习和机器学习领域&#xff0c;损失函数&#xff08;Loss Function&#xff09;是优化问题的核心&#xff0c;决定了模型参数的调整方向和幅度。尽管损失函数种类繁多&#xff0c;但理解其起源和背后的理论有助于我们更好地选择和应用它们。 损失函数的起源 所有的优化…