【发布时间】:2023-03-27 03:29:01
【问题描述】:
我写了一个使用 Guava 缓存的 Flink 作业。缓存对象在 main() 函数中调用的 run() 函数中创建和使用。
有点像:
main() {
run(some,params)
}
run() {
//create and use Guava cache object here
}
如果我以某种程度的并行性运行这个 Flink 作业,所有并行任务会使用同一个缓存对象吗?如果没有,我怎样才能让它们都使用一个缓存?
缓存在流的 process() 函数中使用。所以就像
incoming_stream.process(new ProcessFunction() { //Use Guava Cache here })
您可以将我的用例视为基于缓存的重复数据删除,因此我希望所有并行任务都引用单个缓存对象
【问题讨论】:
-
从您那里显示的内容来看,我看不出任何问题。当您开始在 flink-operators(map、fold、filter 等)中使用 guava 缓存时,您会遇到麻烦。在这种情况下,您应该根据您的需要使用 flink 状态或广播状态。也许您可以更详细地解释您的用例
-
缓存用于流的 process() 函数中。所以它就像incoming_stream.process(new ProcessFunction() { //Use Guava Cache here }) 。您可以将我的用例视为基于缓存的重复数据删除,因此我希望所有并行任务都引用单个缓存对象。
标签: caching parallel-processing guava apache-flink flink-streaming