【发布时间】:2016-04-30 21:35:47
【问题描述】:
我需要将 SparkContext 传递给我的函数,请建议我如何在以下情况下执行此操作。
我有一个序列,每个元素都指向特定的数据源,我们从中获取 RDD 并处理它们。我已经定义了一个函数,它接受 spark 上下文和数据源并执行必要的操作。我目前正在使用 while 循环。但是,我想用 foreach 或 map 来做,这样我就可以暗示并行处理。我需要为函数触发上下文,但我如何从 foreach 传递它?
只是一个示例代码,因为我无法提供实际代码:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
object RoughWork {
def main(args: Array[String]) {
val str = "Hello,hw:How,sr:are,ws:You,re";
val conf = new SparkConf
conf.setMaster("local");
conf.setAppName("app1");
val sc = new SparkContext(conf);
val sqlContext = new SQLContext(sc);
val rdd = sc.parallelize(str.split(":"))
rdd.map(x => {println("==>"+x);passTest(sc, x)}).collect();
}
def passTest(context: SparkContext, input: String) {
val rdd1 = context.parallelize(input.split(","));
rdd1.foreach(println)
}
}
【问题讨论】:
-
你能举一个你现在的代码的最小例子吗?到目前为止你尝试了什么?
-
我不能给出实际代码,但提供了一个需要解决的示例代码.....这只是一个使其工作的示例......
-
所有这些东西最初都没有很好地解释,但当你得到它时,一切都合适了。
标签: scala apache-spark