flink如何广播某个指定的数据源?

提问者:帅平 问题分类:大数据

在flink的复杂计算里面,有时候我们需要把某个数据源广播出去做聚合操作,如果采用广播的方式,则可以很大程度的提高程序执行效率。那么flink如何广播某个指定的数据源呢?

3 个回答
Rae
Rae 管理员

最后再使用广播的数据的时候,直接执行:

List<Object> broad_sources = getRuntimeContext().getBroadcastVariable("broad_user_sources");

就可以取到广播的数据。

发布于:2个月前 (10-08)
Rae
Rae 管理员

广播数据如果被注册之后,那么此份数据会在每一个节点都保存一份,会占用一定的内存,所以这里的数据不应该太大。

发布于:2个月前 (10-08)
Rae
Rae 管理员

在广播的时候,我们只需要使用如下代码进行广播即可:

DataSource<String> user_sources1 = environment.fromElements("a", "b", "c");
		DataSource<String> user_sources2 = environment.fromElements("a", "b", "c");
		user_sources2.map(new RichMapFunction<String, String>() {
			@Override
			public String map(String value) throws Exception {
				
				List<Object> broad_sources = getRuntimeContext().getBroadcastVariable("broad_user_sources");
				
				return null;
			}
		})
		//使用withBroadcastSet对需要广播的数据源进行注册,
		.withBroadcastSet(user_sources1, "broad_user_sources");

里面使用withBroadcastSet函数即可完成广播数据的注册。

发布于:2个月前 (10-08)
我来回答