查看: 217|回复: 5

[转]Flink Broadcast 广播变量应用案例实战

[复制链接]
论坛徽章:
15
Oracle研习者初级
日期:2013-08-08 23:03:13Java徽章
日期:2019-06-27 16:21:50python徽章
日期:2019-06-27 16:21:37股票徽章
日期:2019-01-24 16:03:16股票徽章
日期:2018-11-22 15:36:24Kafka徽章
日期:2018-10-18 15:09:17股票徽章
日期:2018-08-30 15:33:51spark徽章
日期:2018-06-14 15:36:26spark徽章
日期:2017-11-23 16:58:48Hadoop研习者初级
日期:2017-05-18 16:19:47Oracle研习者中级
日期:2017-04-27 17:49:47机器学习徽章
日期:2015-03-02 18:03:11
发表于 2019-9-9 00:28 | 显示全部楼层 |阅读模式

案例 实战

Flink Broadcast 广播变量应用案例实战

https://blog.csdn.net/shenshouniu/article/details/84494871
回复

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
264
python徽章
日期:2019-11-14 15:08:05
发表于 2019-10-24 13:48 | 显示全部楼层
DataStreaming Broadcast (元素广播):元素广播,重复处理

把元素广播给所有的分区,数据会被重复处理,类似于storm中的allGrouping
使用技巧:dataStream.broadcast()
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
264
python徽章
日期:2019-11-14 15:08:05
发表于 2019-10-24 13:48 | 显示全部楼层
广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。
另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的。
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
264
python徽章
日期:2019-11-14 15:08:05
发表于 2019-10-24 13:49 | 显示全部楼层
可以理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。
回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
264
python徽章
日期:2019-11-14 15:08:05
发表于 2019-10-24 13:49 | 显示全部楼层
如果不使用broadcast,则在每个节点中的每个task中都需要拷贝一份dataset数据集,比较浪费内存(也就是一个节点中可能会存在多份dataset数据)。

回复 支持 反对

使用道具 举报

新浪微博达人勋 xenron  实名认证
论坛徽章:
264
python徽章
日期:2019-11-14 15:08:05
发表于 2019-10-24 13:49 | 显示全部楼层
1:初始化数据
DataSet<Integer> toBroadcast = env.fromElements(1, 2, 3)
2:广播数据
.withBroadcastSet(toBroadcast, "broadcastSetName");
3:获取数据
Collection<Integer> broadcastSet = getRuntimeContext().getBroadcastVariable("broadcastSetName");
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-11-16 05:13 , Processed in 0.115372 second(s), 40 queries .