Flink Job: получение InvalidClassException: com.fasterxml.jackson.databind.ObjectMapper - PullRequest
0 голосов
/ 29 апреля 2019

Наше задание flink отлично работает в локальном режиме, но при попытке развернуть его в кластере пряжи выдает ошибку ниже.

Версия Flink: 1.5.0 Jackson 2.6.7

Caused by: java.io.InvalidClassException: com.fasterxml.jackson.databind.ObjectMapper; local class incompatible: stream classdesc serialVersionUID = 2, local class serialVersionUID = 1

Я пробовал использовать разные версии Flink, и проблема возникает со всеми версиями.

DataStream stream = DataStreamManager
            .getStatusUpdateStream(kafkaConsumerConfig, env)
            .filter(new CheckStatusUpdate())
            .keyBy(new OrderUpdateKeySelector());

    stream.process(new ProcessBookingUpdatesEvents(config)).setParallelism(processBookingUpdatesEventsParallelism)
            .process(new ExecuteOrderStatusUpdateNotifierFilter(config)).setParallelism(filterParallelism)
            .process(new ProcessOrderPostFiltering(config,communicationConfig)).setParallelism(processOrderPostFilteringParallelism);

Команда для отправки задания Flink:

export HADOOP_CLASSPATH=`hadoop classpath`;HADOOP_CONF_DIR=/etc/hadoop/conf flink-1.5.0/bin/flink run -m yarn-cluster -yn 2 -ys 1  -yjm 2048 -ytm 4096  -yst -ynm  order_updates -yqu default -p 1 -c com.order.workflow.consumer.flink.OrderStatusUpdateJob  orchestrator-build-1.0.21-staging.jar  config.yml

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Добро пожаловать в класс-ад-ад :-).С информацией, которую вы предоставляете, я не могу действительно увидеть, где появляется эта ошибка, но я предполагаю, что где-то внутри оператора flink вы пытаетесь использовать ObjectMapper для маршалирования / демаршализации некоторых данных.Я бы порекомендовал вам проверить, что (какая версия Джексона) находится на вашем пути к классу пряжи.Если вам нужна конкретная версия Джексона, постройте толстую банку с затененной версией Джексона.Если нет, то поиграйте в легкую игру и возьмите тот, который уже является вашим классным путем для пряжи или (возможно, даже проще), возьмите тот, который уже заштрихован для вас: вы можете найти под названием пакета: org.apache.flink.hadoop.shaded.org.codehaus.jackson.map.

Надеюсь, это поможет.

0 голосов
/ 01 мая 2019

Версия Джексона, пришедшая из пряжи, была 2.9.5, а та, которую я использовал, была 2.6.7. Изменение версии Джексона на 2.9.5 работало для меня.

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
    </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...