RDD-缓存

  /**
   * 统计访问次数最多的ip
   * None     0.244744 s
   * cache    0.126583 s
   * persist  0.132369 s
   * 
   * cache 底层 调用的 是 persist
   * persist 默认的 缓存级别是 StorageLevel.MEMORY_ONLY
   */
  @Test
  def prepare(): Unit = {
    val resouce: RDD[String] = sc.textFile("dataset/access.log")
    val result: RDD[(String, Int)] = resouce.map(item => (item.split(" ")(0), 1))
      .reduceByKey((curr, agg) => curr + agg)
      .persist(StorageLevel.MEMORY_ONLY)

    val max: Array[(String, Int)] = result.sortBy(item => item._2, ascending = false).take(1)
    val min: Array[(String, Int)] = result.sortBy(item => item._2, ascending = true).take(1)
    max.foreach(println(_))
    min.foreach(println(_))
  }

源码 RDD.scala

  /**
   * Set this RDD's storage level to persist its values across operations after the first time
   * it is computed. This can only be used to assign a new storage level if the RDD does not
   * have a storage level set yet. Local checkpointing is an exception.
   */
  def persist(newLevel: StorageLevel): this.type = {
    if (isLocallyCheckpointed) {
      // This means the user previously called localCheckpoint(), which should have already
      // marked this RDD for persisting. Here we should override the old storage level with
      // one that is explicitly requested by the user (after adapting it to use disk).
      persist(LocalRDDCheckpointData.transformStorageLevel(newLevel), allowOverride = true)
    } else {
      persist(newLevel, allowOverride = false)
    }
  }

  /**
   * Persist this RDD with the default storage level (`MEMORY_ONLY`).
   */
  def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)

  /**
   * Persist this RDD with the default storage level (`MEMORY_ONLY`).
   */
  def cache(): this.type = persist()

缓存级别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值