使用过spark的人都知道广播变量这个概念。广播变量相当于一个共享变量,将一个小数据集复制分发到每个task,task直接从本地读取。flink中有两种广播变量,一种静态的广播变量,一种实时动态的广播变量。
静态广播变量示例:
使用场景如: 黑名单判断,将黑名单广播出去进行数据匹配。
public class FlinkBroadcast2 {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<Integer> ds1 = env.fromElements(1, 2, 3, 4);
DataSource<Integer> ds2 = env.fromElements(7, 8, 9, 10);
ds2.map(new RichMapFunction<Integer, String>() {
List<Integer> list = new ArrayList<Integer>();
public void open(Configuration parameters) throws Exception {
list = getRuntimeContext().getBroadcastVariable("bs");
}
@Override
public String map(Integer integer) throws Exception {
return integer.i

本文介绍了Flink中的广播变量,包括静态广播变量和动态广播变量的使用。静态广播变量常用于黑名单判断,而动态广播变量适用于数据依赖于不断变化的处理规则的场景。文中通过实例展示了如何在keyed streaming和非keyed streaming中应用广播变量。
最低0.47元/天 解锁文章
2769

被折叠的 条评论
为什么被折叠?



