首先,从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 通过参…