Сбой конвейера с неверной строкой пространства имен: '//' - PullRequest
0 голосов
/ 24 августа 2018

Контекст: Потоковый конвейер с использованием потока данных 2.6.0, использующий окна и этапы GroupByKey

Что происходит: через короткое время конвейер сохраняетзапускает следующую ошибку:

java.lang.RuntimeException: Invalid namespace string: '//'

Глядя на трассировку стека, это происходит потому, что StateNamespaces (https://github.com/apache/beam/blob/master/runners/core-java/src/main/java/org/apache/beam/runners/core/StateNamespaces.java) пытается отправить пустую строку пространства имен на CoderUtils.decodeFromBase64, который создает неперехваченный EOF error, который сам запускает CoderException.

Однако, это происходит только в облаке. Действительно, просмотр трассировки стека показывает, что на карту поставлен собственный код потока данных ((в частности, прямой бегун никогда не использует StateNamespaces)

Вот трассировка стека: (здесь полная трассировка стека https://pastebin.com/xwh82pYx)

 java.lang.RuntimeException: Invalid namespace string: '//'
        org.apache.beam.runners.core.StateNamespaces.fromString(StateNamespaces.java:270)
        com.google.cloud.dataflow.worker.WindmillTimerInternals.windmillTimerToTimerData(WindmillTimerInternals.java:264)
        com.google.cloud.dataflow.worker.StreamingModeExecutionContext$StepContext.lambda$getNextFiredTimer$1(StreamingModeExecutionContext.java:535)
        com.google.cloud.dataflow.worker.repackaged.com.google.common.collect.Iterators$7.transform(Iterators.java:750)
        com.google.cloud.dataflow.worker.repackaged.com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
        com.google.cloud.dataflow.worker.StreamingModeExecutionContext$StepContext.getNextFiredTimer(StreamingModeExecutionContext.java:543)
        com.google.cloud.dataflow.worker.SimpleParDoFn.processTimers(SimpleParDoFn.java:445)
        com.google.cloud.dataflow.worker.SimpleParDoFn.processTimers(SimpleParDoFn.java:343)
        com.google.cloud.dataflow.worker.util.common.worker.ParDoOperation.finish(ParDoOperation.java:51)
        com.google.cloud.dataflow.worker.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:83)
        com.google.cloud.dataflow.worker.StreamingDataflowWorker.process(StreamingDataflowWorker.java:1227)
        com.google.cloud.dataflow.worker.StreamingDataflowWorker.access$1000(StreamingDataflowWorker.java:136)
        com.google.cloud.dataflow.worker.StreamingDataflowWorker$6.run(StreamingDataflowWorker.java:966)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.beam.sdk.coders.CoderException: java.io.EOFException
        org.apache.beam.sdk.coders.InstantCoder.decode(InstantCoder.java:70)
        org.apache.beam.sdk.coders.InstantCoder.decode(InstantCoder.java:34)
        ...

Как я могу исправить эту ошибку?


Некоторые исследования:

  • Похоже, что нет документации по подобным ошибкам
  • это может быть связано с этимошибка в бегущей строке, однако это должно было быть исправленоd в луче 2.5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...