在主要之外使用spark上下文

时间:2017-02-22 00:21:38

标签: scala apache-spark

如果这是一个基本问题,我很抱歉,但我找不到搜索它的答案,或者我正在寻找错误的东西。

程序中有两个文件:main.scala和second.scala

object main {
  def main(args: Array[String]) = {
    /*load spark conf*/
    val sparkConf = new SparkConf().setAppName("main")
    val sc = new SparkContext(sparkConf)
    }
}

在单独的文件中

object second {
    val somelist = list(1,2,3)
    sc.parallelize(somelist)
}

我想在第二个文件中创建和RDD,但我不能调用sc,因为它超出了范围? (无论我把sc放在哪里或者我使用的是哪种进口)

我该如何解决?

1 个答案:

答案 0 :(得分:1)

sc是一个方法变量,仅存在于方法main中。要使用sc,您必须将上下文对象作为参数传递给方法,如下所示。

object Second {
 def createRDD(sc: SparkContext) = {
    val somelist = list(1,2,3)
    sc.parallelize(somelist)
  }
}

createRDD

中的调用方法main
object main {
  def main(args: Array[String]) = {
    /*load spark conf*/
    val sparkConf = new SparkConf().setAppName("main")
    val sc = new SparkContext(sparkConf)
    Second.createRDD(sc)
    }
}