极客时间Spark性能调优实战-学习笔记(1)

通用性能调优(一)

一、应用开发三原则

原则一:使用spark自身的调优机制
充分利用 Spark 为我们提供的“性能红利”,如钨丝计划、AQE、SQL functions 等等。

钨丝计划的优势?
1)数据结构:采用紧凑的自定义二进制格式,存储效率高,避免的序列化反序列化。
2)开辟堆外内存来管理对象,对内存的估算更加精确,且避免了反复执行垃圾回收。
3)全阶段代码生成取代火山迭代模型。

AQE的优势?
AQE 可以让 Spark 在运行时的不同阶段,结合实时的运行时状态,周期性地动态调整前面的逻辑计划,然后根据再优化的逻辑计划,重新选定最优的物理计划,从而调整运行时后续阶段的执行方式。

1)自动分区合并
以filter和coalesce为例,当filter后,难免有些分区数据很少,需要我们手动通过coalesce合并。AQE会自动检测过小的分区,自动完成合并。
2)自动处理数据倾斜
自动加盐,完成数据倾斜的处理。
3)join策略自动调整
spark 3.0后可支持动态切换join方式,有一种情况是,其中一个表在排序前需要对数据进行过滤,过滤后的表小到足可以由广播变量容纳。针对这种情况,AQE 会根据运行时的统计数据,去动态地调整 Join 策略,把之前敲定的 Sort Merge Join 改为 Broadcast Join,从而改善应用的执行性能。

如何使用

你可能感兴趣的:(spark,big,data,大数据)