Эта проблема только началась 5/9/18 ...
Поток данных не может найти файлы, упакованные с моими классами. Я использую Class.getResource ("/ data.json"). Журнал Stackdriver показывает, что он ищет файл в /var/opt/google/dataflow/class-name.jar!/data.json. Когда я захожу в экземпляр виртуальной машины для работника, этот файл фактически находится в /var/opt/google/dataflow/dataflow/class-name.jar. Это работало вчера.
Больше информации 5/11/18:
Я только что протестировал на примере WordCount прямо из документации Apache Beam:
https://beam.apache.org/get-started/quickstart-java/
Выполнены все шаги. Затем добавил «resources / data.json» в «src / main». Добавлены следующие строки в метод processElement в WordCount.ExtractWordsFn:
try {
String jsonStr = new Scanner(new File(WordCount.class.getResource("/data.json").getFile())).useDelimiter("\\Z").next();
System.out.println("====================================================");
System.out.println(jsonStr);
System.out.println("====================================================");
} catch (Exception e) {
e.printStackTrace();
}
Конечно, в драйвере стека появилась та же ошибка:
сообщение: "java.io.FileNotFoundException: файл: /var/opt/google/dataflow/classes-yGX0uczTTR8A8LXakSr0JA.jar! /Data.json (нет такого файла или каталога)"
Пока пример пакета еще работает, я ssh'ed в рабочий экземпляр и проверил / var / opt / google / dataflow. Существует еще один каталог «dataflow», и файлы копируются туда. Итак, подтверждена проблема двойной директории потока данных.
Кто-нибудь еще сталкивался с этим?
Собираюсь представить этот выпуск в Github.