全球最快的 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

滿足您所有的在線分析列式數據庫管理需求

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35530.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35530.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35530.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄算法訓練營day31|134.加油站、135. 分發糖果、406.根據身高重建隊列

134.加油站 如下圖所示&#xff1a; 當索引一道2的時候&#xff0c;剩余油量的總量13-6 < 0&#xff0c;這個時候說明以索引0為起點不合適&#xff0c;將起點更新為索引3. 兩點證明&#xff1a; 1.如果我們從藍色段中間選一個點開始&#xff0c;是不是最后sumGas就不小于0…

從靈感到成品:使用AI生成博客文章的完整指南

在信息爆炸的時代&#xff0c;每個人都有講述自己故事的權利和需求。博客作為一種表達方式&#xff0c;不僅能記錄個人經歷&#xff0c;還能分享知識和觀點。然而&#xff0c;許多人在寫博客文章時&#xff0c;常常會遇到靈感枯竭、時間不夠用或者不知道如何開始等問題。幸運的…

光伏儲能系統/安科瑞DTSD1352-CF雙向計量表-安科瑞 蔣靜

1 長期以來&#xff0c;我國施行居民用電低價政策&#xff0c;居民電價大幅低于供電成本&#xff0c;雖然實施了全天分三時段的階梯電價政策&#xff0c;但過去近10年中高峰節電的效果卻不夠明顯。從分時用電運作機制來看&#xff0c;居民用電價格的波動幅度不大&#xff0c;但…

華為云鯤鵬架構docker部署2048小游戲

華為云鯤鵬架構docker部署2048小游戲 1. 鯤鵬架構ESC2. 配置docker3. 上傳2048鏡像4. 刪除容器,鏡像 1. 鯤鵬架構ESC 2. 配置docker 安裝dockeryum -y install docker開機啟動 systemctl enable docker啟動docker服務 systemctl start docker查詢docker的運行版本 docker -v3…

時序分析基本概念介紹——min pulse width 最小脈沖寬度

文章目錄 前言一、什么是 min pulse width&#xff1f;二、為什么檢查 min pulse width&#xff1f;三、如何設置 min pulse width約束&#xff1f;1. 在sdc里面定義2. library里面定義 四、如何檢查 min pulse width&#xff1f;五、如何修復 min pulse width&#xff1f;總結…

docker啟動ws-scrcpy和redroid記錄

git克隆最新的ws-scrcpy代碼 git clone gitgithub.com:NetrisTV/ws-scrcpy.git進入ws-scrcpy目錄新建Dockerfile文件&#xff0c;內容如下 FROM node:16-alpine WORKDIR /appRUN npm config set registry http://mirrors.cloud.tencent.com/npm/ RUN npm install -g node-gyp…

攻防世界-Web題目1

目錄 cookie 1、題目 2、知識點 3、思路 get_post 1、題目 2、知識點 3、思路 disabled_button 1、題目 2、知識點 3、思路 backup 1、題目 2、知識點 3、思路 cookie 1、題目 2、知識點 cookie&#xff0c;數據包 3、思路 題目提示我們cookie&#xff0c;抓…

Markdown中如何插入空行和空格

Markdown 是一種輕量級的標記語言&#xff0c;它的主要目標是以易讀易寫為優先&#xff0c;并兼容 HTML。雖然 Markdown 本身對于排版的要求比較寬松&#xff0c;但在某些情況下&#xff0c;我們可能需要在文檔中插入空行或空格來達到特定的排版效果。 插入空行 在Markdown中…

【ai】trition:tritonclient.utils.shared_memory 僅支持linux

Can’t find tritonclient.utils.shared_memory on WIN10 #4149yolov4的python客戶端 導入以后,windows 的pycharm 就是看不到折騰了很久:SaviorEnv 環境下安裝tritonclient[all]也會失敗 (base) C:\Users\zhangbin>conda create -n SaviorEnv python=3.8 Collecting pack…

ubuntu 18 虛擬機安裝(1)

ubuntu 18 虛擬機安裝 ubuntu 18.04.6 Ubuntu 18.04.6 LTS (Bionic Beaver) https://releases.ubuntu.com/bionic/ 參考&#xff1a; 設置固定IP地址 https://blog.csdn.net/wowocpp/article/details/126160428 https://www.jianshu.com/p/1d133c0dec9d ubuntu-18.04.6-l…

元數據管理的發展歷程你了解嗎?元數據管理要克服哪些挑戰?

在當今的信息化時代&#xff0c;數據的價值已被廣泛認可&#xff0c;而元數據作為描述數據的數據&#xff0c;其作用日益凸顯。元數據管理&#xff0c;作為確保數據質量、促進數據共享和提高數據透明度的關鍵環節&#xff0c;對企業的數據戰略至關重要。隨著技術的發展&#xf…

程序設計中對內存分配管理的思考,進程內存、線程內存、共享池、棧、堆

設計一個程序&#xff0c;要考慮如何分配和管理內存&#xff0c;以下是對所有內存分配和管理類型的總結。 第一、進程級的內存資源&#xff0c;也叫全局靜態內存&#xff0c;其生命周期是伴隨整個進程的運行期間&#xff0c;可以用作在進程范圍內共享數據的方法。對應于C語言的…

C#1.0-11.0所有歷史版本主要特性總結

文章目錄 前言名詞解釋主要版本一覽表各版本主要特性一句話總結 C# 1.0 (Visual Studio 2002, .Net Framework 1.0)C# 2.0 (Visual Studio 2005, .Net Framework 2.0)C# 3.0 (Visual Studio 2008, .Net Framework 3.0)C# 4.0 (Visual Studio 2010, .Net Framework 4)C# 5.0 (V…

Bigram 分詞學習

Bigram 分詞&#xff1a;概念、應用與中文實踐 Bigram 分詞是一種基礎而有效的文本處理技術&#xff0c;特別是在自然語言處理中有著廣泛的應用。本文將詳細解釋 Bigram 分詞的概念、它在各個領域的應用&#xff0c;以及在中文處理中的獨特優勢和實踐。 什么是 Bigram 分詞&a…

DataWhale - 吃瓜教程學習筆記(三)

學習視頻&#xff1a;第3章-對數幾率回歸_嗶哩嗶哩_bilibili 西瓜書對應章節&#xff1a; 3.3 對數幾率回歸 sigmoid函數 極大似然估計建模 信息論 以概率論、隨機過程為基本研究工具&#xff0c;研究廣義通信系統的整個過程 - 信息熵 &#xff08;信息期望&#xff09; 度…

Windows bat 提取多個目錄下的文件,到一個目錄

批處理命令 echo off setlocalrem 設置源目錄和目標目錄 set "sourceDirE:\motrix" set "targetDirE:\新建文件夾"rem 創建目標目錄&#xff0c;如果不存在 if not exist "%targetDir%" mkdir "%targetDir%"rem 循環遍歷源目錄中的所…

TCP:TCP連接的建立與終止

TCP連接的建立與終止 建立連接第一次握手第二次握手第三次握手 終止連接第一次揮手第二次揮手第三次揮手第四次揮手 T C P是一個面向連接的協議。無論哪一方向另一方發送數據之前&#xff0c;都必須先在雙方之間建立一條連接。本文將詳細討論一個T C P連接是如何建立的以及通信…

2024年能源電力行業CRM研究報告

中國能源電力行業屬于大制造業的重要組成部分&#xff0c;在國民經濟中的地位舉足輕重。據統計&#xff0c;近十年來能源電力行業的整體投資呈現出增長趨勢&#xff0c;尤其是“十四五”期間增長顯著&#xff0c;2022年全國主要電力企業共完成投資12470億元&#xff0c;同比增長…

STM32中掛在APB1(低速)和APB2(高速)上的外設

在STM32中&#xff0c; 連接在APB1(低速外設)上的設備有&#xff1a; 電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4 。 連接在APB2(高速外設)上的設備有&#xff1a; GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM…

【樂吾樂2D可視化組態編輯器】連線

1 連線的繪制 1.1 鋼筆繪制連線 1.1.1 曲線、線段、直線、腦圖曲線 開始&#xff1a;單擊左鍵 暫停&#xff1a;單擊右鍵 或 enter 結束&#xff1a;esc 樂吾樂2D可視化組態編輯器demo&#xff1a;https://2d.le5le.com/ 1.1.2 橫線 按下快捷鍵shift,點擊鼠標左鍵繪制…