Проблема при запуске потока данных

Я получаю сообщение об ошибке ниже при выполнении задания потока данных. Я пытаюсь обновить существующую версию луча до 2.11.0, но во время выполнения получаю ошибку ниже.

java.lang.IncompatibleClassChangeError: Класс org.apache.beam.model.pipeline.v1.RunnerApi $ StandardPTransforms $ Primitives не реализует запрошенный интерфейс com.google.protobuf.ProtocolMessageEnum в org.apache.beam.runners.core.construction. BeamUrns.getUrn (BeamUrns.java:27) на org.apache.beam.runners.core.construction.PTransformTranslation. (PTransformTranslation.java:58) на org.apache.beam.runners.core.construction.UnconsumedReads ($ 1.visitValue UnconsumedReads.java:49) в org.apache.beam.sdk.runners.TransformHierarchy $ Node.visit (TransformHierarchy.java:666) в org.apache.beam.sdk.runners.TransformHierarchy $ Node.visit (TransformHierarchy.java: 649) в org.apache.beam.sdk.runners.TransformHierarchy $ Node.visit (TransformHierarchy.java:649) в org.apache.beam.sdk.runners.TransformHierarchy $ Node.visit (TransformHierarchy.java:649) в org .apache.beam.sdk.runners.TransformHierarchy $ Node.access $ 600 (TransformHierarchy.java:311) в организации .apache.beam.sdk.runners.TransformHierarchy.visit (TransformHierarchy.java:245) на org.apache.beam.sdk.Pipeline.traverseTopologic (Pipeline.java:458) на org.apache.beam.runners.core.construction .UnconsumedReads.ensureAllReadsConsumed (UnconsumedReads.java:40) в org.apache.beam.runners.dataflow.DataflowRunner.replaceTransforms (DataflowRunner.java:868) в org.apache.beam.runners.dataflow.DataflowRunner.java. : 660) на org.apache.beam.runners.dataflow.DataflowRunner.run (DataflowRunner.java:173) на org.apache.beam.sdk.Pipeline.run (Pipeline.java:313) на org.apache.beam. sdk.Pipeline.run (Pipeline.java:299)


person Ravi    schedule 13.03.2019    source источник
comment
У вас такое же исключение при работе с прямым бегуном?   -  person Rui Wang    schedule 14.03.2019
comment
Привет, Руи, да, с прямым бегуном все в порядке. Я получаю эту ошибку только при работе с DataflowRunner   -  person Ravi    schedule 14.03.2019
comment
Привет, Руи, просто добавляю сюда еще один пункт - мой код работает нормально до версии Beam 2.5.0. Он ломается, как только я меняю его на 2.6.0 или следующие версии с той же ошибкой.   -  person Ravi    schedule 14.03.2019
comment
Пометка @RuiWang для уведомления   -  person Ravi    schedule 14.03.2019
comment
Уточнение - когда вы говорите «обновить конвейер», вы имеете в виду обновление работающего конвейера на месте, да?   -  person Kenn Knowles    schedule 25.03.2019
comment
@KennKnowles, у меня есть задание луча, которое передает данные из Google PubSub и работает на версии 2.2.0. Поскольку 2.2.0 больше не будет поддерживаться, я попытался обновить луч до 2.11.0, но получаю ошибку выше. Обновление конвейера до 2.5.0 работает нормально, 2.6.0 и следующие версии нарушают код. Надеюсь, это разъяснение поможет. Пожалуйста, дайте мне знать, если возникнут другие вопросы   -  person Ravi    schedule 26.03.2019
comment
@Ravi Вы получаете эту ошибку на компьютере, который используете для запуска / обновления, а не на рабочем столе, верно?   -  person Kenn Knowles    schedule 27.03.2019
comment
@KennKnowles - Да, правильно. Я получаю его, когда пытаюсь запустить из своей системы и запустить конвейер в Google Cloud.   -  person Ravi    schedule 28.03.2019
comment
Не могли бы вы показать, что находится на вашем пути к классам?   -  person Kenn Knowles    schedule 28.03.2019


Ответы (3)


Обычно это означает, что версия com.google.protobuf:protobuf-java, с которой был построен Beam, не соответствует версии во время выполнения. Ваш код конвейера также зависит от буферов протокола?

ОБНОВЛЕНИЕ: я подал https://issues.apache.org/jira/browse/BEAM-6839, чтобы отслеживать это. Этого не ожидается.

person Kenn Knowles    schedule 14.03.2019
comment
Нет, в моем коде конвейера нет буферов протокола. - person Ravi; 14.03.2019
comment
Смотрите обновление. Я также заметил, что в 2.7 и более поздних версиях protobuf обновлен по сравнению с 2.5 и ниже. Вы перекомпилировали или используете те же двоичные файлы с новыми зависимостями? - person Kenn Knowles; 15.03.2019
comment
Можете ли вы ответить на ошибку, указав несколько шагов по воспроизведению, если вы можете ими поделиться? - person Kenn Knowles; 27.03.2019

У меня недостаточно репутации, чтобы оставить комментарий, но я столкнулся с этой проблемой и позже выяснил, что моя проблема заключалась в том, что у меня были разные версии лучей в моем pom.xml. У некоторых было 2,19, а у некоторых - 2,20.

Я бы быстро поискал ваши версии в файле pom или gradle, чтобы убедиться, что все они одинаковы.

person Joseph Zack    schedule 09.06.2020

Это может быть вызвано несовместимыми зависимостями. Я успешно обновил луч с 2.2.0 до 2.20.0, одновременно обновив зависимости.

beam.version: 2.20.0
guava.version: 29.0-jre
bigquery.version: v2-rev20191211-1.30.9
google-api-client.version: 1.30.9
google-http-client.version: 1.34.0
pubsub.version: v1-rev20200312-1.30.9
person sha    schedule 07.07.2020