从 demo 到生产 - 手把手写出实战需求的 Flink 广播程序

Flink 广播变量在实时处理程序中扮演着很重要的角色,适当的使用广播变量会大大提升程序处理效率。

 

本文从简单的 demo 场景出发,引入生产中实际的需求并提出思路与部分示例代码,应对一般需求应该没有什么问题,话不多说,赶紧来看看这篇干货满满的广播程序使用实战吧。

 

1 啥是广播 

 

Flink 支持广播变量,允许在每台机器上保留一个只读的缓存变量,数据存在内存中,在不同的 task 所在的节点上的都能获取到,可以减少大量的 shuffle 操作。

换句话说,广播变量可以理解为一个公共的共享变量,可以把一个 dataset 的数据集广播出去,然后不同的 task 在节点上都能够获取到,这个数据在每个节点上只会存在一份。

如果不使用 broadcast,则在每个节点中的每个 task 中都需要拷贝一份 dataset 数据集,比较浪费内存 (也就是一个节点中可能会存在多份 dataset 数据)

 

2 用法总结

 

//1 初始化数据 DataSet<Integer> toBroadcast = env.fromElements(1,2,3) //2 广播数据 api withBroadcastSet(toBroadcast,"broadcastSetName") //3 获取数据 Collection<integer> broadcastSet = getRuntimeContext().getBroadcastVariable("broadcastSetName");

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygwyx.html