Внутри экземпляра задачи Flink Мне нужен доступ к удаленному веб-сервису, чтобы получить некоторые данные при наступлении события, однако я не хочу получать доступ к удаленному веб-сервису каждый раз, когда происходит событие, поэтому мне нужно кэшировать данные в локальной памятии могут быть доступны все задачи процесса, как это сделать? хранить данные в статической закрытой переменной на уровне класса?
Например, в следующем примере, если установить локальную переменную localCache в классе Splitter, она кэшируется на уровне оператора, а не на уровне процесса.
public class WindowWordCount {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<Tuple2<String, Integer>> dataStream = env
.socketTextStream("localhost", 9999)
.flatMap(new Splitter())
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1);
dataStream.print();
env.execute("Window WordCount");
}
public static class Splitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
***private object localCache ;***
@Override
public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out) throws Exception {
for (String word: sentence.split(" ")) {
out.collect(new Tuple2<String, Integer>(word, 1));
}
}
}
}