accessLogs.saveAsTextFile(outputDirectory1)
accessList.saveAsTextFile(outputDirectory2)
如何并行保存RDD而不是串行保存?
答案 0 :(得分:3)
import scala.concurrent._
import scala.concurrent.duration._
val rdds = Seq(accessLogs, accessLists)
val dirs = Seq("outputDirectory1", "outputDirectory2")
import ExecutionContext.Implicits.global
val future = Future.sequence(
for ((rdd, dir) <- rdds zip dirs) yield Future(rdd.saveAsTextFile(dir))
)
//Await.ready(future, Duration.Inf) //to wait for rdds to be saved...
请注意,尽管名称如此,上面使用的sequence
随播广告对象上的方法Future
将执行并行而非顺序执行的Futures
。sequence
。这个sequence
方法本质上是一个应用仿函数WMIC ComputerSystem where Name=COMPUTERNAME call Rename Name=NewName
。
答案 1 :(得分:1)
您可以将它们保存在线程中。
new Thread() {
override def run(): Unit = {
accessLogs.saveAsTextFile(outputDirectory1)
}
}.start()
new Thread() {
override def run(): Unit = {
accessList.saveAsTextFile(outputDirectory2)
}
}.start()
saveAsTextFile
没有返回任何内容,因此我不确定您为什么要设置返回值。