DataFusion 5.0.0 发布,可扩展的查询执行框架
DataFusion 是一个可扩展的查询执行框架,用 Rust 编写,使用 Apache Arrow 作为其内存格式。
DataFusion 支持用于构建逻辑查询计划的 SQL 和 DataFrame API,以及能够使用线程对分区数据源(CSV 和 Parquet)并行执行的查询优化器和执行引擎。DataFusion 还通过 Ballista crate 支持分布式查询执行 。
近日,Apache Arrow 团队正式推出了 DataFusion 5.0.0 版本,该版本汇集了 31 个不同的贡献者共 211 个提交。
该版本的更新亮点包括:
性能
这个版本在性能上有许多改进,下图显示了单个 TPC-H 查询与前一版本相比的相对性能。
该版本还扩展了对更多 TPC-H 查询的支持:q7、q8、q9 和 q13 均在 DataFusion 5.0 中成功运行。
新功能
- 对 SQL-99 Analytics 的初步支持;
- 改进了 JOIN 支持:cross join、semi-join、anti join,以及对空处理的修正;
- 改进的 EXPLAIN 支持;
- 支持 SELECT DISTINCT;
- 支持 Json 和 NDJson 格式的输入;
- 具有关系的查询列;
- 增加了更多与日期时间相关的函数:
now,date_trunc,to_timestamp_millis,to_timestamp_micros,to_timestamp_seconds - Streaming Dataframe.collect;
- 支持表列别名;
- 仅使用统计数字回答 count(*)、min() 和 max() 查询;
- 支持按列位置分组;
- 增加了常量折叠查询优化器;
- 哈希分区聚合;
- 增加了
randomSQL 函数; - 实现了对浮点和字典类型的计数区分;
- 在 Datafusion 中重新导出 arrow 和 parquet 板块;
更多详情可查看:https://github.com/apache/arrow-datafusion/blob/5.0.0/datafusion/CHANGELOG.md
