Flink學習5-常見問題

Flink學習5-常見問題

1 啓動報錯

ClassCastException: cannot assign instance

使用bin/flink run -m yarn-cluster ...方式提交flink作業時,報錯如下:

Caused by: java.lang.ClassCastException: cannot assign instance of org.apache.commons.collections.map.LinkedMap to field org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.pendingOffsetsToCommit of type org.apache.commons.collections.map.LinkedMap in instance of org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010

經查,是因爲
。我們提交的Flink作業,相關的class被動態加載。

可參考X cannot be cast to X exceptions

是因爲多個不同版本的org.apache.commons.collections.map.LinkedMap被不同的CalssLoader加載,而這些類被嘗試轉換爲對方。

解決方法是編輯conf/flink-conf.yaml,設置classloader.resolve-order: parent-first(flink默認逆置了ClassLoader,使用ChildClassLoader即user code ClassLoader來動態加載類。這個選項就關閉了逆置,即優先使用ParentClassLoader Java Application ClassLoader動態加載)來關閉逆置或設置classloader.parent-first-patterns-additional來單獨設置使用parent-first的package。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章