Это, вероятно, глупый вопрос, но я хотел быть уверен, можно ли транслировать функцию в Spark, а не только данные.
Я знаю, что могу транслировать данные, например,
scala> val myList=List(1,2,3)
myList: List[Int] = List(1, 2, 3)
scala> sc.broadcast(myList)
res112: org.apache.spark.broadcast.Broadcast[List[Int]] = Broadcast(7)
, но как насчет функции?Например,
scala> def sum(a:Int):Int={
| val b=a+1
| b
| }
sum: (a: Int)Int
scala> sc.broadcast(sum(_))
res113: org.apache.spark.broadcast.Broadcast[Int => Int] = Broadcast(8)
Это действительно мой метод вещания sum
?Каким-то образом это означает, что у каждого узла теперь есть «копия» метода sum
, и, возможно, я мог бы распараллелить некоторые задания, в которых используется метод sum
, возможно, путем трансляции некоторых данных.Это правильно?