Поток данных, загружающий файлы в / var / opt / google / dataflow / dataflow - PullRequest
0 голосов
/ 10 мая 2018

Эта проблема только началась 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.

1 Ответ

0 голосов
/ 12 мая 2018

Я нашел обходной путь: используйте Class.getResourceAsStream, чтобы получить входной поток. По какой-то причине getResourceAsStream функционировал должным образом, в то время как getResource по-прежнему не работает. Для всех моих целей входящий поток работает так же, как и URL.

...