Apache flink 如何处理Apache Flink中很少更新的大型查找表

Apache flink 如何处理Apache Flink中很少更新的大型查找表,apache-flink,Apache Flink,处理数据的模式是,我有一个记录流,其中包含一些信息a。这些记录由一些ID分割。这些信息a取决于当前记录、先前计算的结果和一个大的查找表。查找表不经常更改,更改很小。我知道我可以使用mapWithState/flatMapWithState进行有状态计算。但是,我应该如何处理查找表?惯用的方法是也将其作为状态处理(如A),但查找表的大小可能会对性能/内存造成影响(例如,在快照时) 我目前正在考虑让它成为一个受读写器锁保护的共享资源。有没有更好的方法来处理这种模式?现在唯一可能的方法是使用state

处理数据的模式是,我有一个记录流,其中包含一些信息a。这些记录由一些ID分割。这些信息a取决于当前记录、先前计算的结果和一个大的查找表。查找表不经常更改,更改很小。我知道我可以使用mapWithState/flatMapWithState进行有状态计算。但是,我应该如何处理查找表?惯用的方法是也将其作为状态处理(如A),但查找表的大小可能会对性能/内存造成影响(例如,在快照时)


我目前正在考虑让它成为一个受读写器锁保护的共享资源。有没有更好的方法来处理这种模式?

现在唯一可能的方法是使用state,正如您所提到的。我们正在研究另一种方法。以下是我们的一些想法:

这正是我需要的。每台机器实例只复制一次这方面的输入(比如说,我在一台机器上有80个任务槽,它不会将数据复制80次)?因此,目前不可能在运营商内部使用大型HashMap而不进行多次复制(在流式API中)?是的,必须考虑这一点。