2017-02-22 10 views
1

これは基本的な質問ですが、それを探している回答が見つからないか、間違ったことを探しています。メイン以外のsparkコンテキストを使用

私はプログラム中の二つのファイルがあります:私は2番目のファイルに作成し、RDDしたいが、私はカント

別のファイルに
object second { 
    val somelist = list(1,2,3) 
    sc.parallelize(somelist) 
} 

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

をスコープ外であるためscを呼び出しますか? (私がscをどこに置いても、私が使っている輸入品に関係なく)

どうすれば修正できますか?

答えて

1

scは、メソッドmainの内部にのみ存在するメソッド変数です。 scを使用するには、コンテキストオブジェクトをパラメータとして次のようにメソッドに渡す必要があります。非常にエレガントです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) 
    } 
} 
+0

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

呼び出し方法createRDDはあなたに感謝します! – Tengansui

関連する問題