I have a class as this:
public class Test {
private static String name;
public static String getName() {
return name;
}
public stati
Ok, there is basically 2 ways to take a value known to the master to the executors:
No need to use static variables in either case. But, if you DO want to have static values available on your executor VMs, you need to do one of these:
Hope this helps!
P.S: As for you exception: I just don't see it on that code sample, my bet is that it is occurring elsewhere.
Edit for extra clarification: The lazy val solution is simply Scala, no Spark involved...
object MyStaticObject
{
lazy val MyStaticValue = {
// Call a database, read a file included in the Jar, do expensive initialization computation, etc
4
}
}
Since each Executor corresponds to a JVM, once the classes are loaded MyStaticObject will be initialized. The lazy keyword guarantees that the MyStaticValue variable will only be initialized the first time it is actually requested, and hold its value ever since.