在sf=0.1時測試fireducks、duckdb、polars的tpch

首先,從https://github.1git.de/fireducks-dev/polars-tpch下載源代碼包,將其解壓縮到/par/fire目錄。
然后進入此目錄,運行
SCALE_FACTOR=0.1 ./run-fireducks.sh,腳本會首先安裝所需的包,編譯tpch的數據生成器,然后按照sf=0.1生成tbl文件,再轉化為parquet格式,最后執行。
如下所示:

root@DESKTOP-59T6U68:/par/fire# SCALE_FACTOR=0.1 ./run-fireducks.sh
Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
Requirement already satisfied: pyarrow in ./.venv/lib/python3.13/site-packages (20.0.0)
Requirement already satisfied: pydantic in ./.venv/lib/python3.13/site-packages (2.11.7)
Requirement already satisfied: pydantic_settings in ./.venv/lib/python3.13/site-packages (2.10.1)
Requirement already satisfied: linetimer in ./.venv/lib/python3.13/site-packages (0.1.5)
Requirement already satisfied: annotated-types>=0.6.0 in ./.venv/lib/python3.13/site-packages (from pydantic) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in ./.venv/lib/python3.13/site-packages (from pydantic) (2.33.2)
Requirement already satisfied: typing-extensions>=4.12.2 in ./.venv/lib/python3.13/site-packages (from pydantic) (4.14.0)
Requirement already satisfied: typing-inspection>=0.4.0 in ./.venv/lib/python3.13/site-packages (from pydantic) (0.4.1)
Requirement already satisfied: python-dotenv>=0.21.0 in ./.venv/lib/python3.13/site-packages (from pydantic_settings) (1.1.1)
make -C tpch-dbgen dbgen
make[1]: Entering directory '/par/fire/tpch-dbgen'
make[1]: 'dbgen' is up to date.
make[1]: Leaving directory '/par/fire/tpch-dbgen'
cd tpch-dbgen && ./dbgen -vf -s 0.1 && cd ..
TPC-H Population Generator (Version 2.17.2)
Copyright Transaction Processing Performance Council 1994 - 2010
Generating data for suppliers table/
Preloading text ... 100%
done.
Generating data for customers tabledone.
Generating data for orders/lineitem tablesdone.
Generating data for part/partsupplier tablesdone.
Generating data for nation tabledone.
Generating data for region tabledone.
mkdir -p "data/tables_pyarrow/scale-0.1"
mv tpch-dbgen/*.tbl data/tables_pyarrow/scale-0.1/
.venv/bin/python -m scripts.prepare_data_pyarrow
Processing table: customer
Processing table: lineitem
Processing table: nation
Processing table: orders
Processing table: part
Processing table: partsupp
Processing table: region
Processing table: supplier
rm -rf data/tables_pyarrow/scale-0.1/*.tbl
PATH_TABLES=data/tables_pyarrow .venv-fireducks/bin/python -m queries.fireducks
{"scale_factor":0.1,"large_string_comment":false,"paths":{"answers":"data/answers","tables":"data/tables_pyarrow","timings":"output/run","timings_filename":"timings.csv","plots":"output/plot"},"plot":{"show":false,"n_queries":7,"y_limit":null},"run":{"io_type":"skip","log_timings":true,"show_results":false,"check_results":false,"polars_show_plan":false,"polars_eager":false,"polars_streaming":false,"polars_new_streaming":false,"polars_gpu":false,"polars_gpu_device":0,"use_rmm_mr":"cuda-async","modin_memory":8000000000,"spark_driver_memory":"2g","spark_executor_memory":"1g","spark_log_level":"ERROR","include_io":false},"dataset_base_dir":"data/tables_pyarrow/scale-0.1"}
Code block 'Run fireducks query 1' took: 0.20121 s
Code block 'Run fireducks query 2' took: 0.52730 s
Code block 'Run fireducks query 3' took: 0.15594 s
Code block 'Run fireducks query 4' took: 0.15536 s
Code block 'Run fireducks query 5' took: 0.23419 s
Code block 'Run fireducks query 6' took: 0.11777 s
Code block 'Run fireducks query 7' took: 0.27936 s
Code block 'Run fireducks query 8' took: 0.22832 s
Code block 'Run fireducks query 9' took: 0.18384 s
Code block 'Run fireducks query 10' took: 0.33037 s
Code block 'Run fireducks query 11' took: 0.16605 s
Code block 'Run fireducks query 12' took: 0.16841 s
Code block 'Run fireducks query 13' took: 0.14314 s
Code block 'Run fireducks query 14' took: 0.13404 s
Code block 'Run fireducks query 15' took: 0.14402 s
Code block 'Run fireducks query 16' took: 0.20629 s
Code block 'Run fireducks query 17' took: 0.15346 s
Code block 'Run fireducks query 18' took: 0.19930 s
Code block 'Run fireducks query 19' took: 0.20121 s
Code block 'Run fireducks query 20' took: 0.27538 s
Code block 'Run fireducks query 21' took: 0.30119 s
Code block 'Run fireducks query 22' took: 0.22134 s
Code block 'Overall execution of ALL fireducks queries' took: 130.80006 s

如果要和其他工具的性能比較,queries目錄下有duckdb、polars等的腳本,調用方法如下:

PATH_TABLES=data/tables_pyarrow SCALE_FACTOR=0.1 .venv/bin/python -m queries.duckdb
Code block 'Run duckdb query 1' took: 2.36939 s
...
Code block 'Overall execution of ALL duckdb queries' took: 88.98257 sPATH_TABLES=data/tables_pyarrow SCALE_FACTOR=0.1 .venv/bin/python -m queries.polars
Code block 'Run polars query 1' took: 0.34880 s
...
Code block 'Overall execution of ALL polars queries' took: 61.85478 s

fireducks的這個腳本是從polars那里fork的,不知做了什么加工,單個查詢duckdb比polars和fireducks慢很多,相差10倍,難以置信。直接用如下語句測試,明明不到1秒

import duckdb
q1="""
SELECTl_returnflag,l_linestatus,SUM(l_quantity) AS sum_qty,SUM(l_extendedprice) AS sum_base_price,SUM(l_extendedprice * (1 - l_discount)) AS sum_disc_price,SUM(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,AVG(l_quantity) AS avg_qty,AVG(l_extendedprice) AS avg_price,AVG(l_discount) AS avg_disc,COUNT(*) AS count_order
FROM'data/tables_pyarrow/scale-0.1/lineitem.parquet' l
WHEREl_shipdate <= CAST('1998-09-02' AS date)
GROUP BYl_returnflag,l_linestatus
ORDER BYl_returnflag,l_linestatus;
"""
import time
t=time.time();df = duckdb.sql(q1);df.show();print(time.time()-t)
 .venv/bin/python /par/duckdbq1.py
┌──────────────┬──────────────┬─────────┬────────────────────┬───────────────────┬────────────────────┬────────────────────┬───────────────────┬─────────────────────┬─────────────┐
│ l_returnflag │ l_linestatus │ sum_qty │   sum_base_price   │  sum_disc_price   │     sum_charge     │      avg_qty       │     avg_price     │      avg_disc       │ count_order │
│   varchar    │   varchar    │ int128  │       double       │      double       │       double       │       double       │      double       │       double        │    int64    │
├──────────────┼──────────────┼─────────┼────────────────────┼───────────────────┼────────────────────┼────────────────────┼───────────────────┼─────────────────────┼─────────────┤
│ A            │ F            │ 37742005320753880.689985054096266.6828355256751331.44926725.53758711685499736002.1238290140.05014459706345448147790 │
│ N            │ F            │   95257133737795.83999994127132372.6512132286291.2294447325.3006640106241735521.326916334650.04939442231075733765 │
│ N            │ O            │ 745929710512270008.899929986238338.38476610385578376.58547625.54553767123287536000.924688013420.05009595890418491292000 │
│ R            │ F            │ 37855235337950526.46987155071818532.9421015274405503.04936625.525943857425135994.029214030060.04998927856189752148301 │
└──────────────┴──────────────┴─────────┴────────────────────┴───────────────────┴────────────────────┴────────────────────┴───────────────────┴─────────────────────┴─────────────┘0.6631364822387695

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

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

相關文章

AWS多賬號管理終極指南:從安裝配置到高效使用

引言:為什么需要多賬號管理? 在云計算時代,企業使用多個AWS賬號已成為最佳實踐。根據AWS Well-Architected Framework,多賬號架構可以: 實現環境隔離(生產/測試/開發)滿足不同業務單元的安全要求簡化資源管理和成本分配符合合規性要求(如SOC2、ISO27001)本文將手把手…

UE5音頻技術

1 . 調制器 Modulator 調整參數 調制器可以使聲音每次音高都不一樣 2. 隨機 節點 3. 混音器 Mixer 混合兩個音頻 4. 串聯器 Concatenator 按循序播放 5.多普勒 Doppler 根據距離音頻變化 6.包絡線 Enveloper 武器充能發射 7.混響

創客匠人視角:創始人 IP 打造與知識變現的培訓賦能體系

在知識付費行業進入精耕期的當下&#xff0c;為何部分企業投入大量培訓卻收效甚微&#xff1f;創客匠人 CEO 老蔣通過服務 5W 知識博主的經驗指出&#xff1a;唯有將創始人 IP 思維與培訓體系深度融合&#xff0c;才能讓培訓成為知識變現的 “轉換器”。一、內訓體系重構&…

基于Java+SpringBoot的三國之家網站

源碼編號&#xff1a;S591 源碼名稱&#xff1a;基于SpringBoot的三國之家網站 用戶類型&#xff1a;雙角色&#xff0c;用戶、管理員 數據庫表數量&#xff1a;20 張表 主要技術&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven 運行環境&#xff1a;Windows/Mac、…

推薦算法系統系列五>推薦算法CF協同過濾用戶行為挖掘(itembase+userbase)

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 配套視頻 推薦算法系統實戰全系列精品課【陳敬雷】 文章目錄 推薦算…

pytest之fixture中yield詳解

1. fixture——yield介紹 fixture的teardown操作并不是獨立的函數&#xff0c;用yield關鍵字呼喚teardown操作。前面通過fixture實現了在每個用例之前執行初始化操作&#xff0c;那么用例執行完之后&#xff0c;如需要清除數據&#xff08;或還原&#xff09;操作&#xff0c;…

Nginx 動靜分離原理與工作機制詳解:從架構優化到性能提升

前言&#xff1a;在 Web 應用架構不斷演進的今天&#xff0c;如何高效處理日益增長的訪問量和復雜的業務邏輯&#xff0c;成為開發者必須面對的挑戰。當我們在瀏覽器中打開一個網頁&#xff0c;那些直觀可見的 HTML 頁面、精美絕倫的圖片、流暢運行的 JavaScript 腳本&#xff…

介紹electron

一、Electron 是什么&#xff1f; Electron 是一個基于 Chromium 和 Node.js 的框架&#xff0c;允許開發者使用前端技術&#xff08;HTML/CSS/JavaScript&#xff09;構建原生桌面應用。其核心優勢在于&#xff1a; 跨平臺&#xff1a;一次開發&#xff0c;生成 Windows、ma…

DeepSeek與詭秘之主

1、大模型像個腐儒 其實從大模型的訓練方式來看&#xff0c;它算不上天賦異稟。尤其在成長階段&#xff0c;大模型那種種令人驚艷的表現&#xff0c;足夠讓人誤以為這是個天才。 可人這種生物&#xff0c;注定是貪婪的。在大模型成長后期&#xff0c;伴隨著各種技巧的驗證&…

動手實踐OpenHands系列學習筆記5:代理系統架構概述

筆記5&#xff1a;代理系統架構概述 一、引言 AI代理系統是一種能夠自主執行任務的智能軟件架構&#xff0c;OpenHands作為AI驅動的軟件開發代理平臺&#xff0c;擁有完整的代理系統架構設計。本筆記將探討AI代理架構的基本原理&#xff0c;并通過分析OpenHands核心架構&…

智能電動汽車 --- 車輛網關路由緩存

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

Spring中實現依賴注入(DI)的三種方式

1. Autowired 字段注入&#xff08;不推薦&#xff09;? Service public class UserService {Autowired // 直接在字段上注入private UserRepository userRepository; } ??原理??&#xff1a;Spring 啟動時掃描所有 Component、Service 等注解的類&#xff0c;發現 Aut…

Alpha系統聯結大數據、GPT兩大功能,助力律所管理降本增效

如何通過AI工具實現法律服務的提質增效,是每一位法律人都積極關注和學習的課題。但從AI技術火爆一下,法律人一直缺乏系統、實用的學習資料,來掌握在法律場景下AI的使用技巧。 今年5月,iCourt攜手貴陽律協大數據與人工智能專業委員會,聯合舉辦了《人工智能助力律師行業高質量發…

UI前端與數字孿生融合新趨勢:智慧家居的智能化控制與個性化服務

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;數字孿生重構智慧家居的技術范式在智能家居滲透率快速提升的今天&#xf…

R語言初學者爬蟲簡單模板

習慣使用python做爬蟲的&#xff0c;反過來使用R語言可能有點不太習慣&#xff0c;正常來說R語言好不好學完全取決于你的學習背景以及任務復雜情況。對于入門學者來說&#xff0c;R語言使用rvesthttr組合&#xff0c;幾行代碼就能完成簡單爬取&#xff08;比Python的Scrapy簡單…

如何決定idea項目中使用的是哪個版本的jdk?是idea中配置決定的?還是maven中配置決定的

? IDEA 項目中使用哪個 JDK&#xff0c;是由以下幾部分共同決定的&#xff1a; 階段決定因素舉例項目編譯&#xff08;編譯器&#xff09;IDEA 設置的 Project SDK 和模塊 SDKProject Structure → Project / Modules 中配置的 JDKMaven 構建Maven 使用的 JDK&#xff08;即 …

Docker拉取bladex 、 sentinel-dashboard

docker pull bladex/sentinel-dashboard 是用于從 Docker Hub 拉取 Alibaba Cloud Sentinel Dashboard 鏡像的命令&#xff0c;默認會拉取最新版本。以下是詳細的操作步驟及注意事項&#xff1a; 操作步驟 1. 拉取鏡像 &#xff1a;在終端輸入 docker pull bladex/sentinel-…

從零開始理解 JavaScript 中的 `window.parent`、`top` 和 `self`

從零開始理解 JavaScript 中的 window.parent、top 和 self 在 JavaScript 開發中&#xff0c;window 對象是瀏覽器環境中最重要的全局對象之一。它不僅代表了瀏覽器窗口本身&#xff0c;還提供了對窗口層級關系的訪問能力。對于處理嵌套框架&#xff08;iframe&#xff09;或…

vue3引入海康監控視頻組件并實現非分屏需求一個頁面同時預覽多個監控視頻;

海康監控視頻非分屏需求&#xff0c;一個頁面引用多個視頻組件; js文件位置index.html 引入js文件//根據自己路徑引入哈<script src"static/haiKangWeb3.0/jquery-1.7.1.min.js"></script><script type"text/javascript" id"videonode…

Policy Gradient【強化學習的數學原理】

目錄 policy 與表格方式的區別&#xff1a; metric to define optimal policies 1. weighted averge 2. the average reward 問題&#xff1a; 梯度計算 如何理解policy-gradient&#xff1f; policy gradient與表格方式(value based)的區別&#xff1a; policy 通過參…