使用datafusion和tpchgen-rs进行完整的TPCH 22个查询的基准测试

1.从源码编译bench二进制文件。
下载datafusion源码, 解压到目录,比如/par/dafu,

cd /par/dafu/benchmarks
export CARGO_INCREMENTAL=1
export PATH=/par:/par/mold240/bin:$PATH

因为mold默认使用并行编译,而这些二进制文件很大,如果出现资源不足情况,就会编译失败:

 (signal: 9, SIGKILL: kill)
warning: build failed, waiting for other jobs to finish...
error: could not compile `datafusion-benchmarks` (bin "external_aggr")

这时可以用如下命令,强制单任务编译

CARGO_BUILD_JOBS=1 cargo build --release

编译时间较长,最后会生成dfbench、tpch、imdb、parquet、external_aggr五个文件。
如果要进行全部基准测试,参考这篇文档
如果只是做TPCH测试,参考如下步骤。

2.用tpchgen-rs生成parquet文件。
tpchgen-rs生成tpch的效率比官方的dbgen高出很多倍。而且支持多种格式,获取它的源码
然后用如下命令解压缩编译

tar xf tpchgen-rs-1.1.1.tar.gz
mv tpchgen-rs-1.1.1 tpchgen-rs
cd tpchgen-rs
export CARGO_INCREMENTAL=1
export PATH=/par:/par/mold240/bin:$PATH
cargo build --release

用如下命令生成parquet格式的sf3规模数据文件。

time target/release/tpchgen-cli -s 3 --output-dir sf3-parquet --format=parquet

real    0m6.523s
user    0m27.516s
sys     0m1.740s

为了方便测试,把数据目录移动到/par/data/, 并输入如下脚本,将文件放置在各自的目录下,这是datafusion 的tpch二进制文件要求的,我开始不懂,出错了,在datafusion的github讨论区提问,得到以上的答案。

mv sf3-parquet /par/data/
cd /par/data/sf3-parquet
for tbl in customer lineitem nation orders part partsupp region supplier; do
  mkdir -p "$tbl"
  mv "${tbl}.parquet" "$tbl/"
done

3.执行测试
将当前目录切换到源代码benchmarks目录,这是必须的,因为要测试的sql脚本位于该目录的queries目录下。然后执行命令行,指定数据文件格式和文件目录, 更多的参数可参考本文第1部分的文档链接,也可以执行tpch --help选项查看。

cd /par/dafu/benchmarks
/par/dafu/target/release/tpch benchmark datafusion --path /par/data/sf3-parquet --format parquet
Running benchmarks with the following options: RunOpt { query: None, common: CommonOpt { iterations: 3, partitions: None, batch_size: None, mem_pool_type: "fair", memory_limit: None, sort_spill_reservation_bytes: None, debug: false }, path: "/par/data/sf3-parquet", file_format: "parquet", mem_table: false, output_path: None, disable_statistics: false, prefer_hash_join: true, sorted: false }
Query 1 iteration 0 took 1828.3 ms and returned 4 rows
Query 1 iteration 1 took 1124.3 ms and returned 4 rows
Query 1 iteration 2 took 1126.3 ms and returned 4 rows
Query 1 avg time: 1359.65 ms
...
Query 22 iteration 0 took 180.0 ms and returned 7 rows
Query 22 iteration 1 took 170.3 ms and returned 7 rows
Query 22 iteration 2 took 175.7 ms and returned 7 rows
Query 22 avg time: 175.32 ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值