문제
hive 2.3.9 버전을 실행하면서 다음과 같은 오류가 발생하였습니다.
Exception in thread "main" java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
at org.apache.logging.log4j.core.async.AsyncLoggerDisruptor.start(AsyncLoggerDisruptor.java:108)
at org.apache.logging.log4j.core.async.AsyncLoggerContext.maybeStartHelper(AsyncLoggerContext.java:97)
at org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:86)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:242)
at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:160)
at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:132)
at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:102)
원인
하이브에 설치된 disruptor-3.3.0.jar 파일과 최신 pom 파일에 설정된 정보가 맞지 않아서 발생한 오류 입니다. pom.xml 파일에 설정된 disruptor 버전이 3.4.4 이고, 배포 버전에 포함된 라이브러리가 3.3.0 이어서 발생하는 오류입니다.
해결 방법
배포 버전에 포함 된 disruptor-3.3.0.jar 를 제거하고, disruptor-3.4.4.jar 파일로 변경해 주면 오류를 해결할 수 있습니다.
https://mvnrepository.com/artifact/com.lmax/disruptor/3.4.4
반응형