數據湖表格式 Hudi/Iceberg/DeltaLake/Paimon TPCDS 性能對比(Spark 引擎)

當前,業界流行的集中數據湖表格式 Hudi/Iceberg/DeltaLake,和最近出現并且在國內比較火的 Paimon。我們現在看到的很多是針對流處理場景的讀寫性能測試,那么本篇文章我們將回歸到大數據最基礎的場景,對海量數據的批處理查詢。本文主要介紹通過 TPC-DS 3TB 的數據的99個SQL,對這幾種數據湖表格式的查詢性能做一個全面的測試。

測試環境

我們選擇使用 Aamzon EMR Serverless 作為測試的基礎環境,版本選擇 EMR 最新的 7.1.0。Spark 版本為 3.5.0。

Amazon EMR Serverless 已經集成了 Hudi,Iceberg,Delta Lake,所以我們直接使用集成的版本,而Paimon,是通過外部依賴使用的是 paimon-spark-3.5-0.8.1

測試數據是通過 TPC DS 工具生成好的 3TB 的 parquet 數據文件,我們把著 3TB 的文件分別以這幾種表格式的類型寫入各自的表中。
每張表的數量如下:

表名記錄數
call_center48
catalog_page36000
catalog_returns432006840
catalog_sales4320004419
customer30000000
customer_address15000000
customer_demographics1920800
date_dim73049
household_demographics7200
income_band20
inventory1033560000
item360000
promotion1800
reason67
ship_mode20
store1350
store_returns864006076
store_sales8251110748
time_dim86400
warehouse22
web_page3600
web_returns215999442
web_sales2159391499
web_site66

每個表格式的版本

OTFVersion
Hudi0.14.1
Iceberg1.4.3
DeltaLake3.0.0
Paimon0.8.1

Spark 配置參數
--conf spark.dynamicAllocation.enabled=false
--conf spark.driver.cores=4
--conf spark.driver.memory=5g
--conf spark.executor.cores=4
--conf spark.executor.memory=6g
--conf spark.executor.instances=47

測試結果

我們分別在EMR Serverless 使用最大資源配置 400 vCPUs, 3000 GB memory, 20000 GB disk 運行了4 種OTF的查詢測試,得到如下的結果,下圖是每一個sql的執行時長,所以數值越小,說明查詢用時越短。

在這里插入圖片描述

測試過程中 Iceberg,Delta Lake 的SQL 是全部運行成功的
Hudi 在執行 q2,q3 失敗
Paimon 在執行 q4,q5 失敗,發現應該是在運行作業的時候,shuffle 數據導致磁盤空間不足,因此在啟動 Paimon 作業的時候,在EMRServerless啟動參數中,又單獨添加了指定磁盤大小的參數 spark.emr-serverless.executor.disk=100g

通過上圖,初步看到,Paimon 在 query 場景下的性能與其他集中 OTF 格式有一定差距。

將每種OTF的運行時長累加:
在這里插入圖片描述

這樣對比就更明顯,Delta Lake 在 Spark 下的查詢性能更優,著應該跟 spark 背后的 databrick 的優化有不小的關系, Iceberg 其次,第三是 Hudi。而 Paimon 表現最差,它的執行時長(5100+s)則超過了 Iceberg(2100+s) 的兩倍,相比 Deltalake(1600+s)也有三倍的差距。

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

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

相關文章

Java中的線程同步機制有哪些?

Java中的線程同步機制是一套用于協調線程間的數據訪問及活動的機制,該機制用于保障線程安全以及實現這些線程的共同目標。Java平臺提供的線程同步機制主要包括以下幾個方面: 1. 鎖(Lock) 鎖是Java中最基本的線程同步機制之一&am…

飛書、釘釘、企業微信的大模型“三國殺”

文:互聯網江湖 作者:劉致呈 曾經在一次內部的周年會上,字節跳動CEO梁汝波曾表示對飛書和火山引擎的研發投入不低于抖音和TikTok。言下之意,飛書在字節內部的重要性比肩抖音。 業務的重要性從時間上也看得出來,要知道…

靜態時序分析:Leaf Cell(葉單元)

相關閱讀???????靜態時序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 在DC中,leaf cell(葉單元)有時會出現在描述中,例如set_input_delay的-reference_pin選項的參數,就必須是一個端口或…

C# Winform之propertyGrid控件使用詳解和分組設置

PropertyGrid 控件在 WinForms 中是一個非常有用的工具,它允許用戶查看和編輯一個對象的屬性。這個控件非常適合用于配置對話框或任何需要動態顯示對象屬性的地方。下面我會詳細介紹 PropertyGrid 的使用方法和如何對屬性進行分組。 使用詳解 1. 添加 PropertyGri…

《昇思25天學習打卡營第18天|onereal》

RNN實現情感分類 概述 情感分類是自然語言處理中的經典任務,是典型的分類問題。本節使用MindSpore實現一個基于RNN網絡的情感分類模型,實現如下的效果: 輸入: This film is terrible 正確標簽: Negative 預測標簽: Negative輸入: This film…

AI版Siri要明年見,研究表明ChatGPT暫無法取代程序員,Kimi推出瀏覽器插件

ChatGPT狂飆160天,世界已經不是之前的樣子。 更多資源歡迎關注 根據彭博社記者馬克古爾曼的最新消息,蘋果公司今年不會推出全新的Apple Intelligence驅動的Siri,該公司計劃在明年1月開始測試,并在iOS 18.4中才推出正式版本。 此前…

景聯文科技以高質量多模態數據集賦能AI大模型,精準匹配提升模型性能

在人工智能的浪潮中,語料數據如同建筑的基石,其質量、規模和運用策略直接決定了AI模型的表現和應用的廣泛性。 景聯文科技在AI領域深耕多年,打磨了高質量多模態數據集,致力于為不同訓練階段的算法精準匹配高質量數據資源。 3000萬…

STM32中斷(NVIC和EXIT)

CM3 內核支持 256 個中斷,其中包含了 16 個內核中斷和 240個外部中斷,并且具有 256 級的可編程中斷設置。但STM32 并沒有使用CM3內核的全部東西,而是只用了它的一部分。STM32有 76 個中斷,包括16 個內核中斷和 60 個可屏蔽中斷&am…

Dify中的RAG和知識庫

一.RAG 基本架構 當用戶提問 “美國總統是誰?” 時,系統并不是將問題直接交給大模型來回答,而是先將用戶問題在知識庫中進行向量搜索,通過語義相似度匹配的方式查詢到相關的內容(拜登是美國現任第46屆總統…&#xff0…

對比多種方法執行命令行命令

在這兩種方法中,一種是使用argparse模塊來模擬命令行參數的解析,另一種是使用subprocess模塊來直接執行一個命令行命令。下面是對兩種方法的詳細比較: 使用argparse模擬命令行參數 這種方法主要用于在Python腳本內部測試或集成其他使用argp…

深入剖析C++的 “屬性“(Attribute specifier sequence)

引言 在閱讀開源項目源代碼是,發現了一個有趣且特殊的C特性:屬性。 屬性(attribute specifier sequences)是在C11標準引入的。在C11之前,編譯器特有的擴展被廣泛用來提供額外的代碼信息。例如,GNU編譯器&…

AcWing 3587:連通圖 ← dfs(鄰接矩陣 or 鏈式前向星)

【題目來源】https://www.acwing.com/problem/content/3590/【題目描述】 給定一個無向圖和其中的所有邊,判斷這個圖是否所有頂點都是連通的。【輸入格式】 輸入包含若干組數據。 每組數據第一行包含兩個整數 n 和 m,表示無向圖的點和邊數。 接下來 m 行…

Java面試題系列 - 第5天

題目:Java Lambda表達式與Stream API的深度應用 背景說明:Java 8引入了Lambda表達式和Stream API,極大地提升了Java函數式編程的能力,使代碼更簡潔、更易讀。掌握Lambda表達式和Stream API的使用,對于優化數據處理流程…

Qt/C++項目積累: 2.主機監控器 - 2.2 歷史功能實現

修訂歷史: 20240711:初始表設計,采用sqlite 正文: 關于歷史數據存儲,考慮的是用數據庫來完成,目前考慮使用Sqlite和mysql,先用sqlite來實現,設計表過程如下: 機器總覽…

白騎士的C++教學進階篇 2.1 指針與引用

系列目錄 上一篇:白騎士的C教學基礎篇 1.5 數據結構 指針和引用是C中非常重要的概念,它們提供了強大的功能,使程序員能夠直接操作內存,提高程序的效率和靈活性。在本篇博客中,我們將深入探討指針與引用的基礎知識&…

從零開始學習嵌入式----Makefile工具

一、Makefile 簡明指南 你是否曾經面對過一堆源代碼文件,卻不知道如何將它們編譯成可執行文件?或者你是否厭倦了每次修改代碼后都要手動輸入冗長的編譯命令? 如果是的話,那么 Makefile 就是你的救星! 二、Makefile 是什…

全網最適合入門的面向對象編程教程:14 類和對象的 Python 實現-類的靜態方法和類方法,你分得清嗎?

全網最適合入門的面向對象編程教程:14 類和對象的 Python 實現-類的靜態方法和類方法,你分得清嗎? 摘要: 本文主要介紹了Python中類和對象中的類方法和靜態方法,以及類方法和靜態方法的定義、特點、應用場景和使用方…

網安防御保護-小實驗

1、DMZ區內的服務器,辦公區僅能在辦公時間內(9:00-18:00)可以訪問,生產區的設備全天可以訪問 2、生產區不允許訪問互聯網,辦公區和游客區允許訪問互聯網 3、辦公區設備10.0.2.10不允許訪問DMZ區的FTP服務器和HTTP服務器,僅能ping通…

vue 環境變量那些事

常見的項目環境變量的使用 總則:使用 .env.環境名字文件去定義,運行命令的時候指定環境 比如:.env 代表所有環境變量使用的一些變量 .env.development 代表的開發環境變量 .env.production 代表的生產環境變量也就是上線以后使用的 vitevu…

自主研發接口測試框架

測試任務:將以前完成的所有的腳本統一改寫為unitest框架方式 1、需求原型 1.1 框架目錄結構 V1.0:一般的設計思路分為配置層、腳本層、數據層、結果層,如下圖所示 V 2.0:加入驅動層testdriver 1.2 框架各層需要完成的工作 1、配…