失效链接处理 |
Spark开发者的免费入门宝典:让你的数据处理更简单(上册) PDF 下载
本站整理下载:
相关截图:
主要内容:
一、Performance 与性能相关的新功能主要有: Adaptive Query Execution Dynamic Partition Pruning Query Complication Speedup Join Hints (一)Adaptive Query Execution Adaptive Query Execution(AQE)在之前的版本里已经有所实现,但是之前的框架存在一些缺
Apache Spark 的前世今生 < 6 陷,导致使用不是很多,在Spark3.0中Databricks(Spark初创团队创建的大数据与AI智能公司) 和Intel的工程师合作,解决了相关的问题。 在Spark1.0中所有的Catalyst Optimizer都是基于规则 (rule) 优化的。为了产生比较好的查询规 则,优化器需要理解数据的特性,于是在Spark2.0中引入了基于代价的优化器 (cost-based optimizer),也就是所谓的CBO。然而,CBO也无法解决很多问题,比如: 数据统计信息普遍缺失,统计信息的收集代价较高; 储存计算分离的架构使得收集到的统计信息可能不再准确; Spark部署在某一单一的硬件架构上,cost很难被估计; Spark的UDF(User-defined Function)简单易用,种类繁多,但是对于CBO来说是个黑 盒子,无法估计其cost。 总而言之,由于种种限制,Spark的优化器无法产生最好的Plan。也正是因为上诉原因,运行期的 自适应调整就变得相当重要,对于Spark更是如此,于是有了AQE,其基本方法也非常简单易懂。 如下图所示,在执行完部分的查询规划后,Spark可以收集到结果的统计信息,然后利用这些信息 再对查询规划重新进行优化。这个优化的过程不是一次性的,而是自适应的,也就是说随着查询规 划的执行会不断的进行优化, 而且尽可能地复用了现有优化器的已有优化规则。让整个查询优化变 得更加灵活和自适应。 Spark3.0中AQE包括三个主要的运行期自适应功能: 可以基于运行期的统计信息,将Sort Merge Join 转换为Broadcast Hash Join; 可以基于数据运行中间结果的统计信息,减少reducer数量,避免数据在shuffle期间的过量分 区导致性能损失; 可以处理数据分布不均导致的skew join。 更多的信息大家可以通过搜索引擎查询了解。
|