火花作业的优化

时间:2017-07-23 04:07:39

标签: python apache-spark pyspark

我是新手,想要了解火花工作的优化。

我的工作是根据条件合并2行的简单转换类型作业。人们可以对这些工作进行哪些类型的优化?

1 个答案:

答案 0 :(得分:0)

有关这项工作的更多信息会有所帮助:

一些通用建议:

  • 安排操作员非常重要。并非所有安排都会产生相同的表现。运营商的安排应该是减少洗牌次数和洗牌的数据量。洗牌是相当昂贵的操作;必须将所有随机数据写入磁盘,然后通过网络传输。
  

重新分区,加入,组合以及任何* By或* ByKey转换都可能导致混乱。

  • rdd.groupByKey().mapValues(_.sum)将产生与rdd.reduceByKey(_ + _)相同的结果。但是,前者将通过网络传输整个数据集,而后者将计算每个分区中每个密钥的本地总和,并在洗牌后将这些本地总和合并为更大的总和。
  

通过利用来连接两个数据集时,可以避免随机播放   broadcast variables

  • 避免使用flatMap-join-groupBy模式。
  • 避免reduceByKey当输入和输出值类型不同时。

这并非详尽无遗。您还应该考虑调整Spark的配置。

我希望它有所帮助。