scala初始化sc.parallelise inside“if block”并在外循环执行

hc8w905p  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(315)

我有以下代码:-

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"))
  }
}

我想用event(a,b)和event(c,d)的值seq将我的collection对象保存在cassandra中,如果条件失败,它应该是event(e,f)和event(g,h),但它将变为null。我哪里出错了?
注意:如果没有if块,这意味着所有集合定义都在一个范围内初始化,那么它就可以正常工作。
谢谢,

bgtovc5b

bgtovc5b1#

如果你愿意的话 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")))

希望这有帮助!

相关问题