1 特性
- adaptive query execution和dynamic partition pruning,实现在TPC-DS上相较2.4版本2倍性能
- 兼容ANSI SQL标准
- Python类型提示和补充的pandas UDFs,详见pandas APIs改进
- 简化PySpark异常,提供更好的Python异常处理
- 结构化流新界面
- R用户自定义函数调用可达40倍效率提升
2 Spark SQL改进
新的Adaptive Query Execution (AQE)提升了性能和简化了运行时执行计划调优。
(1) 动态Shuffle分区
用户可以设置较大的Shuffle分区数量,AQE在运行时合并相邻的小分区,简化甚至避免分区调优。
(2) 动态转换join策略
在运行时自动将sort-merge join转换为broadcast-hash join,避免因缺乏统计或错误估计规模导致执行不理想的计划。
(3) 动态优化倾斜join
自动检测并拆分倾斜分区,提升性能
3 动态分区修剪
优化编译时未能识别并跳过的分区。对于星型模型尤为常见。在事实表与维度表连接的场景中,通过识别维表过滤出的分区来修剪从事实表中读取的分区。
4 ANSI SQL 兼容
- 兼容性:使用阳历公历,禁止使用ANSI SQL保留字作为标识符
- 正确性:数值操作的运行时溢出检查、预定义schema的表插入的编译时强制类型
5 Join提示
用户可设置join提示以帮助编译器做出最佳选择,并新增提示SHUFFLE_MERGE, SHUFFLE_HASH and SHUFFLE_REPLICATE_NL
6 Python API增强
pandas用于单节点数据组织和分析,Koalas用于分布式环境数据分析,移除了作图支持。
PySpark API增强:
- 使用类型提示的新Pandas API
- Pandas UDF和API的新类型,详见blog post
- 更好的异常处理,隐藏JVM栈跟踪信息
7 Hydron项目,流式和扩展性
加速器感知调度
Hydron用于在Spark上整合深度学习和数据处理。用户可以通过配置使用加速器。
结构化流的新界面
增加已完成的流式查询作业的聚合信息、流式查询的详细统计信息
可观察的metrics
是定义在查询上的随机聚合函数。当查询执行完成时,发出数据处理相关的命名事件。
新的catalog plug-in API
用于访问和操作外部数据源元数据。
可以直接访问和操作同时实现了data source V2 API和catalog plug-in API的外部数据源的数据和元数据。
8 其他
更多细节详见release notes
参考资料
O’Reilly’s New Learning Spark, 2nd Edition