【问题标题】: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 返回的值没有任何用处。此外,Unit 是AnyVal 的子类型永远不能等于null,这就是为什么你会得到你所看到的特定错误。 Ints 也会发生同样的事情:
def foo(x: Int) = x != null