Flink: загрузить файл ресурсов в режиме кластера - PullRequest
0 голосов
/ 04 июля 2019

Я использую код Flink, который хорошо работает при локальном выполнении (в IntelliJ), но вызывает сбой при работе в кластере Flink:

org.apache.flink.client.program.ProgramInvocationException: The main method caused an error.

При инициализации своей работы я загружаю текстовый файл,который встроен в мой файл jar со следующим кодом:

try (InputStream is = new FileInputStream(new File("src/main/resources/my_file.txt"))) {
            myObject = new MyClass.Parser().parse(is);
}catch (final Exception e) {
            LOGGER.error("Error while trying to file : "+e.getMessage(), e);
}

Объект, созданный из содержимого текстового файла, затем используется для создания моего источника и мойки, а также для выполнения некоторых внутренних вычислений вфункция карты.

Как правильно загрузить этот файл в режиме кластера?

Редактировать:

Когда я заменяю код выше на

myObject = new MyClassParser().parse(FILE_CONTENT_AS_STRING);

Код работает хорошо.Похоже, что только ошибка файла вызывает ошибку.

1 Ответ

1 голос
/ 04 июля 2019

Когда вы встраиваете свой код в jar, путь к файлу больше не может использоваться для доступа к файлу.Вместо этого вам нужно использовать что-то вроде <YourClassName>.class.getResourceAsStream("/my_file.txt"), чтобы получить InputStream.

...