Я использую Apache Flink для выполнения аналитики потоковых данных.
Я использую зависимость , объект которой для создания занимает более 10 секунд, поскольку он читает несколько существующих файлов. в hdfs до инициализации.
Если я инициализирую объект в открытом методе, я получаю исключение тайм-аута, а если в конструкторе приемника / плоской карты, я получаю исключение сериализации.
В настоящее время я использую stati c block для инициализации объекта в каком-либо другом классе, используя Preconditions.checkNotNull (MGenerator.mGenerator) в главном файле, а затем он работает, если используется в плоской карте приемника.
Есть ли способ создать объект не сериализуемой зависимости, который может занять более 10 секунд для инициализации в плоской карте или приемнике Флинка?
public class DependencyWrap {
static MGenerator mGenerator;
static {
final String configStr = "{}";
final Config config = new Gson().fromJson(config, Config.class);
mGenerator = new MGenerator(config);
}
}
public class MyStreaming {
public static void main(String[] args) throws Exception {
Preconditions.checkNotNull(MGenerator.mGenerator);
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(parallelism);
...
input.flatMap(new RichFlatMapFunction<Map<String,Object>,List<String>>() {
@Override
public void open(Configuration parameters) {
}
@Override
public void flatMap(Map<String,Object> value, Collector<List<String>> out) throws Exception {
out.collect(MFVGenerator.mfvGenerator.generateMyResult(value.f0, value.f1));
}
});
}
}
Также, пожалуйста, поправьте меня, если я ошибаюсь по этому вопросу.