Difference between using a global variable and broadcasting a variable

Posted by Hung on
URL: http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/Difference-between-using-a-global-variable-and-broadcasting-a-variable-tp1128.html

Hi,

What would be the difference between using global variable and broadcasting it?

A toy example:

// Using global
{
private static int num = 10;
{main...}

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 :
{
{main...}
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