BroadCastTest.java
package com.xxxxx.flink.batch;
import org.apache.flink.api.common.functions.RichFilterFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.operators.FilterOperator;
import org.apache.flink.configuration.Configuration;
import java.util.ArrayList;
import java.util.List;
public class BroadCastTest {
public static void main(String[] args) throws Exception {
ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();
DataSource<String> textFile = environment.readTextFile("data/textfile");
List<String> list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
DataSource<String> whiteDs = environment.fromCollection(list);
FilterOperator<String> f1 = textFile.filter(new RichFilterFunction<String>() {
List<String> whiteNames = null;
@Override
public void open(Configuration parameters) throws Exception {
whiteNames = getRuntimeContext().getBroadcastVariable("white-name");
}
@Override
public boolean filter(String value) throws Exception {
for (String whileName : whiteNames) {
if (value.contains(whileName)) {
return true;
}
}
return false;
}
});
FilterOperator<String> f2 = f1.withBroadcastSet(whiteDs, "white-name");
f2.print();
System.out.println("=======================================");
FilterOperator<String> f3 = f2.filter(new RichFilterFunction<String>() {
List<String> whiteNames = null;
@Override
public void open(Configuration parameters) throws Exception {
whiteNames = getRuntimeContext().getBroadcastVariable("white-name");
}
@Override
public boolean filter(String value) throws Exception {
for (String whileName : whiteNames) {
if (value.contains(whileName)) {
return true;
}
}
return false;
}
});
FilterOperator<String> f4 = f3.withBroadcastSet(whiteDs, "white-name");
f4.print();
}
}
textfile
hello zanshang
hello lisi
hello wangwu
hello zhaoliu
xixi huhu