Spark:如何在解除RDD之前保存RDD

时间:2015-11-13 17:29:33

标签: caching apache-spark rdd persist

我希望在保存数据后取消myRDD。我有以下代码:

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

但行:

isDone != null

一直说:使用`!='比较类型Unit和Null的值总是会产生真的

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

1 个答案:

答案 0 :(得分:1)

这应该可以正常工作:

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

数据将在RDD未加载之前保存。

请注意,saveAsTextFile方法会返回Unit。这是一种由任何方法(过程)返回的类型,它不返回任何有用的东西,并且只有一个实例,即()。因此,通过测试saveAsTextFile返回的值,无法实现任何有用的功能。另外,作为Unit子类型的AnyVal永远不能等于null,这就是您收到所遇到的特定错误的原因。同样的事情发生在Ints

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