You should also be aware that the value of a static variable is only accessible within the same JVM. Flink is a distributed system and runs in multiple JVMs. So if you set a value in one JVM it is not visible in another JVM (on a different node).
In general, I would avoid to use static variables in Flink programs. Best, Fabian 2015-04-26 9:54 GMT+02:00 Sebastian <s...@apache.org>: > Hi Hung, > > A broadcast variable can also refer to an intermediate result of a Flink > computation. > > Best, > Sebastian > > > On 25.04.2015 21:10, HungChang wrote: > >> Hi, >> >> What would be the difference between using global variable and >> broadcasting >> it? >> >> A toy example: >> >> // Using global >> {{... >> private static int num = 10; >> } >> >> public class DivByTen implements FlatMapFunction<Tuple1<Double>, >> Tuple1<Double>> { >> @Override >> public void flatMap(Tuple1<Double>value, Collector<Tuple1<Double>> >> out) >> { >> out.collect(new Tuple1<Double>(value/ num)); >> } >> }} >> >> // Using broadcasting : >> {... >> public static class DivByTen extends >> RichGMapFunction<Tuple1<Double>, >> Tuple1<Double>>{ >> >> private long num; >> >> @Override >> public void open(Configuration parameters) throws >> Exception { >> super.open(parameters); >> num = getRuntimeContext().<Integer> >> getBroadcastVariable( >> "num").get(0); >> } >> >> @Override >> public void map(Tuple1<Double>value, >> Collector<Tuple1<Double>> out)) >> throws Exception{ >> out.collect(new Tuple1<Double>(value/num)); >> } >> } >> } >> >> Best regards, >> >> Hung >> >> >> >> -- >> View this message in context: >> http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Difference-between-using-a-global-variable-and-broadcasting-a-variable-tp1128.html >> Sent from the Apache Flink User Mailing List archive. mailing list >> archive at Nabble.com. >> >>