打包客户端代码以传递给RDD

时间:2016-04-03 12:36:33

标签: apache-spark

将scala函数传递给rdd.map()。逻辑过于复杂,无法包含在函数本身中,而是将逻辑封装在scala object中。该对象是实例化Spark上下文的应用程序的一部分,如以下示例所示:

def func(s.String) = {
   // LogicEngine is object which, given a string, returns a different string
   LogicEngine.process(s) 
}

val sc = new SparkContext(config)

val rdd = sc.textFile(“…”)

val rdd2 = rdd.map(func)

问题是,执行此操作的正确方法是什么,以便LogicEngine本身传递给正在处理rdd本身的节点(以便它与传递给rdd的函数代码一起生效) ),而不是坐在客户端?

由于

1 个答案:

答案 0 :(得分:1)

这就是你已经拥有的。每个节点在首次访问时都会实例化并使用自己的LogicEngine副本。