Scala 在 "if block" 内初始化 sc.parallelise 并执行外部循环

Scala initialise sc.parallelise inside "if block" and execute outside loop

我有以下代码:-

case class event(id: String, date: String)

object test {
  def main(args: Array[String]) {
  var collection = null
  if(some_condition){
     val a = some_value
     val b = value2
     val value3 = some_function_calculation_from other_class
     val c = value3
     val d = value4
    collection = sc.parallelize(Seq(event(a,b),event(c,d)))
  } else {
    collection = sc.parallelize(Seq(event(e,f),event(g,h)))
  }
  collection.saveToCassandra("db", "table", SomeColumns("id", "date"))
  }
}

我想让我的集合对象保存在 cassandra 中,值为 event(a,b) & event(c,d) 的 seq,如果条件失败,它应该是 event(e,f) & event (g,h) 但它将变为空。我哪里出错了?

注意:当没有 if 块时它工作正常,这意味着在一个范围内初始化所有集合定义。

谢谢,

如果您希望根据条件 collection 作为 RDD[event],那么您可以将 if else 分配给变量 collection

val collection = if (some_condition)
    sc.parallelize(Seq(event("a", "b"), event("c", "d")))
  else
    sc.parallelize(Seq(event("e", "f"), event("g", "h")))

希望对您有所帮助!