Spark性能调优系列:(二)开发调优(避免创建重复的RDD)

调优:避免创建重复的RDD

对于同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据。

如果同份数据创建多个RDD,则Spark会多次重复计算来创建多个代表相同数据的RDD,进而增加了作业的性能开销。

案例:

package com.kevin.scala.tuning

import org.apache.spark.{SparkConf, SparkContext}

/**
  * 避免创建重复的RDD
  */
object AvoidRepetition {

  def main(args: Array[String]): Unit = {
    val file = "DTSparkCore\\src\\main\\resources\\records.txt"
    // 1.创建SparkConf
    val conf = new SparkConf().setAppName("AvoidRepetition").setMaster("local")
    // 2.创建SparkContext
    val sc = new SparkContext(conf)
    // 3.不应该创建多个相同数据源RDD
    //    val rdd1 = sc.textFile(file)
    //    val rdd2 = sc.textFile(file)
    //    val tuples = rdd1.map(_.split(" ")).collect()
    //    val array = rdd2.flatMap(_.split(" "))
    //    tuples.foreach(value => (value.foreach(println(_))))
    //    array.foreach(println(_))
    // 优化一:使用同一个数据源RDD,优化二:使用cache和checkpoint做持久化
    val rdd1 = sc.textFile(file).cache()
    sc.setCheckpointDir("C:\\Users\\caonanqing\\Desktop\\persistence")
    rdd1.checkpoint()
    val tuples = rdd1.map(_.split(" ")).collect()
    val array = rdd1.flatMap(_.split(" "))

    tuples.foreach(value => (value.foreach(println(_))))
    array.foreach(println(_))

    // 关闭
    sc.stop()

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值