Scala 并行保存两个RDD

Scala 并行保存两个RDD,scala,apache-spark,Scala,Apache Spark,accessLogs.saveAsTextFileoutputDirectory1 accessList.saveAsTextFileoutputDirectory2 如何并行保存这两个RDD而不是串行保存?您可以将它们保存在线程中 new Thread() { override def run(): Unit = { accessLogs.saveAsTextFile(outputDirectory1) } }.start() new Thread(

accessLogs.saveAsTextFileoutputDirectory1

accessList.saveAsTextFileoutputDirectory2


如何并行保存这两个RDD而不是串行保存?

您可以将它们保存在线程中

  new Thread() {
      override def run(): Unit = {
accessLogs.saveAsTextFile(outputDirectory1) 
      }
    }.start()

  new Thread() {
      override def run(): Unit = {
accessList.saveAsTextFile(outputDirectory2)
      }
    }.start()

saveAsTextFile不会返回任何内容,因此我不确定您为什么要设置返回值。

您可以将它们保存在线程中

  new Thread() {
      override def run(): Unit = {
accessLogs.saveAsTextFile(outputDirectory1) 
      }
    }.start()

  new Thread() {
      override def run(): Unit = {
accessList.saveAsTextFile(outputDirectory2)
      }
    }.start()
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...
saveAsTextFile不返回任何内容,因此我不确定为什么要设置返回值

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...
请注意,尽管名称不同,上面使用的Future companion对象上的方法序列将并行而不是顺序地执行由for Compension产生的未来。这个序列方法本质上是一个实用的函子序列


请注意,尽管名称不同,上面使用的Future companion对象上的方法序列将并行而不是顺序地执行由for Compension产生的未来。这个序列方法本质上是一个实用的函子序列。

您需要单独的还是想要一个文件?请问这样做的原因是什么?有什么好处?你需要单独的文件还是想要一个文件?如果我可以问一下,这样做的原因是什么?有什么好处?谢谢你,我的错,没有回报价值。它只是将不同的RDD持久化到不同的文件。谢谢你,我的错,没有返回值。它只是将不同的RDD持久化到不同的文件中。