深圳大数据培训学校:spark开发调优

蘑菇酷说3天前上网我要分享

深圳大数据培训学校在哪里?在前锋教育学习是很好的。

Spark性能优化的第一步是在开发Spark作业的过程中注意并应用性能优化的一些基本原则。开发和调优是让大家了解以下基本的Spark开发原则,包括:RDD沿袭设计,合理使用运营商,优化特殊操作。在开发过程中,您应始终注意上述原则,并根据具体的业务和实际应用场景灵活地将这些原则应用于您自己的Spark作业。

原则1:避免创建重复的RDD

一般来说,当我们开发Spark作业时,我们首先基于数据源(例如Hive表或HDFS文件)创建初始RDD;然后在RDD上执行操作员操作,然后获得下一个RDD;依此类推,来回循环,直到我们计算出我们需要的结果。在此过程中,多个RDD通过不同的操作员操作(例如map,reduce等)串联在一起。这个“RDD字符串”是RDD谱系,它是“RDD血缘关系链”。

我们应该注意开发过程:对于相同的数据,只应创建一个RDD,并且不能创建多个RDD来表示相同的数据。

原则2:尽可能重用相同的RDD

数据创建多个RDD之外,还必须在对不同数据执行操作员操作时尽可能多地重用RDD,从而尽可能地减少RDD的数量。最小化操作员执行次数。

原则3:坚持使用多次的RDD

当您在Spark代码中多次对RDD执行操作员操作时,恭喜您已经实现了Spark作业优化的第一步,即尽可能地重用RDD。此时,是时候执行第二步优化,即确保在RDD上执行多个操作员操作时仅评估RDD本身一次。

在Spark中在RDD上执行多个运算符的默认原则是:每次在RDD上执行运算符操作时,它将从源重新计算它,计算RDD,然后执行RDD。您的运营商运营。这种方式的表现非常差。因此,对于这种情况,我们的建议是坚持多次使用的RDD。

原则4:尽量避免使用shuffle类操作符

如果可能,请尽量避免使用shuffle类操作符。由于Spark作业正在运行,因此消耗性能的地方是随机播放过程。简而言之,shuffle过程将分布在群集中多个节点上的相同密钥拉到同一节点以进行聚合或连接操作。例如,reduceByKey,join等将触发shuffle操作。

原则5:使用map-side预聚合的shuffle操作

如果由于业务需要而需要使用shuffle操作,则不能使用map类运算符,而是尝试使用map-side预聚合运算符。

原则6:广播大变量

有时在开发过程中,您会遇到需要在运算符函数中使用外部变量的场景(尤其是大型变量,例如超过100M的大型集合),那么您应该使用Spark的广播函数来提高性能。

以上是前锋深圳大数据培训学校教师的经验总结。我希望每个学生都能不断改进大数据技术!

收集报告投诉

深圳大数据培训学校在哪里?在前锋教育学习是很好的。

Spark性能优化的第一步是在开发Spark作业的过程中注意并应用性能优化的一些基本原则。开发和调优是让大家了解以下基本的Spark开发原则,包括:RDD沿袭设计,合理使用运营商,优化特殊操作。在开发过程中,您应始终注意上述原则,并根据具体的业务和实际应用场景灵活地将这些原则应用于您自己的Spark作业。

原则1:避免创建重复的RDD

一般来说,当我们开发Spark作业时,我们首先基于数据源(例如Hive表或HDFS文件)创建初始RDD;然后在RDD上执行操作员操作,然后获得下一个RDD;依此类推,来回循环,直到我们计算出我们需要的结果。在此过程中,多个RDD通过不同的操作员操作(例如map,reduce等)串联在一起。这个“RDD字符串”是RDD谱系,它是“RDD血缘关系链”。

我们应该注意开发过程:对于相同的数据,只应创建一个RDD,并且不能创建多个RDD来表示相同的数据。

原则2:尽可能重用相同的RDD

数据创建多个RDD之外,还必须在对不同数据执行操作员操作时尽可能多地重用RDD,从而尽可能地减少RDD的数量。最小化操作员执行次数。

原则3:坚持使用多次的RDD

当您在Spark代码中多次对RDD执行操作员操作时,恭喜您已经实现了Spark作业优化的第一步,即尽可能地重用RDD。此时,是时候执行第二步优化,即确保在RDD上执行多个操作员操作时仅评估RDD本身一次。

在Spark中在RDD上执行多个运算符的默认原则是:每次在RDD上执行运算符操作时,它将从源重新计算它,计算RDD,然后执行RDD。您的运营商运营。这种方式的表现非常差。因此,对于这种情况,我们的建议是坚持多次使用的RDD。

原则4:尽量避免使用shuffle类操作符

如果可能,请尽量避免使用shuffle类操作符。由于Spark作业正在运行,因此消耗性能的地方是随机播放过程。简而言之,shuffle过程将分布在群集中多个节点上的相同密钥拉到同一节点以进行聚合或连接操作。例如,reduceByKey,join等将触发shuffle操作。

原则5:使用map-side预聚合的shuffle操作

如果由于业务需要而需要使用shuffle操作,则不能使用map类运算符,而是尝试使用map-side预聚合运算符。

原则6:广播大变量

有时在开发过程中,您会遇到需要在运算符函数中使用外部变量的场景(尤其是大型变量,例如超过100M的大型集合),那么您应该使用Spark的广播函数来提高性能。

以上是前锋深圳大数据培训学校教师的经验总结。我希望每个学生都能不断改进大数据技术!