将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的函数代码一起生效) ),而不是坐在客户端?
由于
答案 0 :(得分:1)
这就是你已经拥有的。每个节点在首次访问时都会实例化并使用自己的LogicEngine
副本。