Spark Cassandra应用程序始终运行模式

时间:2016-07-15 09:38:36

标签: scala apache-spark cassandra

我们可以使用scala创建一个spark应用程序,它将始终处于运行状态。就像它定期执行作业一样,但是驱动程序将继续运行,这样我就可以访问由作业创建的RDD而不将其存储到永久存储(类似于应用程序上下文)。

总结要求即使在工作完成后也会将RDD保留在内存中。

我是新手,可以激发scala并寻找有关相同的指导。

1 个答案:

答案 0 :(得分:0)

Spark程序只是一个普通的Scala程序,只要main方法没有返回,应用程序就会继续在集群上运行。一种方法是将Spark代码放在一个不断处理请求的循环中。

while (!stop) {
  // poll() block until you put a new job into it.
  request = incomingJobQueue.poll()
  // Process the request with Spark
  // DO NOT call SparkContext.stop
  val result = ...
  outgoingQueue.put(result)      
}

整个应用程序共享相同的SparkContext,因此您始终可以访问持久化的RDD。需要注意的一点是,当你不再需要它时,记住unpersist RDD或者内存会很快耗尽。发生这种情况时,将使用LRU策略从缓存中删除RDD,这可能会意外丢弃有用的RDD。保持缓存较小也会降低GC开销,使程序运行得更快。