Apache Flink:如何访问Realdfunction中的广播变量



我有一个带有一个条目的数据集。这个值(一个阈值)我需要在减少功能中。Flink文档显示了如何将数据集广播到地图功能:

data.map.withBroadcastSet(dataSetToBroadcast, "broadcastSetName");

并在地图功能中访问:

@Override
public void open() {
  Collection<Integer> broadcastSet = getRuntimeContext().getBroadcastVariable("broadcastSetName");
}

看来这仅适用于RichMapfunctions,但我想在减少功能中访问此广播变量。当我在降低功能中编写打开函数时,我会得到错误"方法不覆盖其超级阶级的方法"。

我知道我可以在减少之前接收地图功能中的广播,但是随后我必须将其添加到数据集中的每个条目,这是开销。另外,我正在使用一个不存在打开功能的FlatMapFunction。

我也不想。要将我的一个值传递到降低功能中。

有人知道使我的一个值在减少功能中访问吗?谢谢

通过RuntimeContext访问广播集。可以通过调用RichFunction.getRuntimeContext()获得RuntimeContext

flink为大多数功能接口提供了"富"变体,包括 RichReduceFunction

只需实现RichReduceFunction,就可以访问RuntimeContext的所有功能。

相关内容

  • 没有找到相关文章

最新更新