【问题标题】:Spark: How do I save an RDD before unpersist itSpark:如何在取消持久化之前保存 RDD
【发布时间】:2015-11-13 17:29:33
【问题描述】:

我想在数据保存后取消持久化 myRDD。我有以下代码:

  val isDone = myRDD.saveAsTextFile("myOutput")
  if (isDone != null) {
     myRDD.unpersist()
  }

但行:

isDone != null

一直在说:使用 `!=' 比较 Unit 和 Null 类型的值将始终得到 true

解决这个问题的正确方法应该是什么?谢谢!

【问题讨论】:

    标签: caching apache-spark rdd persist


    【解决方案1】:

    这应该可以正常工作:

    myRDD.saveAsTextFile("myOutput")
    myRDD.unpersist()
    

    数据将在RDD 未持久化之前保存。

    注意saveAsTextFile 方法返回Unit。这是一种由任何方法(过程)返回的类型,它不会返回任何有用的东西,并且只有一个实例,即()。因此,通过测试saveAsTextFile 返回的值没有任何用处。此外,UnitAnyVal 的子类型永远不能等于null,这就是为什么你会得到你所看到的特定错误。 Ints 也会发生同样的事情:

    def foo(x: Int) = x != null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 2016-01-16
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多