복붙노트

[HADOOP] 어떻게 java.lang.IllegalArgumentException가 문제를 해결할 수 : 인식 할 수없는 하둡 주 버전 번호를 : 3.1.0은?

HADOOP

어떻게 java.lang.IllegalArgumentException가 문제를 해결할 수 : 인식 할 수없는 하둡 주 버전 번호를 : 3.1.0은?

내 쿼리 3.1.0 예외 : 인식 할 수없는 하둡 주 버전 번호 : I - java.lang.IllegalArgumentException를 얻을. 다음 쿼리는 다음과 같습니다

WITH 
t1 as 
(select * from browserdata join citydata on cityid=id),

t2 as 
(select uap.device as device, uap.os as os, uap.browser as browser, name as cityname 
from t1 
lateral view ParseUserAgentUDTF(UserAgent) uap as device, os, browser),

t3 as
(select t2.cityname as cityname, t2.device as device, t2.browser as browser, t2.os as os, count(*) as count from t2 group by t2.cityname, t2.os, t2.device, t2.browser)

select cityname, maximum,  device, os, browser
 from
     (select cityname, device, browser, os, 
             max(count) over(partition by cityname)                         as maximum,
             dense_rank() over (partition by cityname order by count desc ) as rnk      
      from t3
     ) s  where rnk =1 
;

그리고 여기 내 컨테이너의 로그는 다음과 같습니다

Log Type: stdout

Log Upload Time: Mon Dec 24 16:21:37 +0000 2018

Log Length: 5529

Showing 4096 bytes of 5529 total. Click here for the full log.

.8.0_171]
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) [udf.jar:?]
    at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable.callInternal(TezTaskRunner.java:185) [tez-runtime-internals-0.7.0.2.6.5.0-292.jar:0.7.0.2.6.5.0-292]
    at org.apache.tez.runtime.task.TezTaskRunner$TaskRunnerCallable.callInternal(TezTaskRunner.java:181) [tez-runtime-internals-0.7.0.2.6.5.0-292.jar:0.7.0.2.6.5.0-292]
    at org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36) [tez-common-0.7.0.2.6.5.0-292.jar:0.7.0.2.6.5.0-292]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_171]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: java.lang.IllegalArgumentException: Unrecognized Hadoop major version number: 3.1.0
    at org.apache.hadoop.hive.shims.ShimLoader.getMajorVersion(ShimLoader.java:178) ~[hive-exec-1.2.1000.2.6.5.0-292-d249a9484f801bbb96f01e7bbd357a58127aaca3e59c783a90c062bf99c9310d.jar:1.2.1000.2.6.5.0-292]
    at org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:143) ~[hive-exec-1.2.1000.2.6.5.0-292-d249a9484f801bbb96f01e7bbd357a58127aaca3e59c783a90c062bf99c9310d.jar:1.2.1000.2.6.5.0-292]
    at org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:102) ~[hive-exec-1.2.1000.2.6.5.0-292-d249a9484f801bbb96f01e7bbd357a58127aaca3e59c783a90c062bf99c9310d.jar:1.2.1000.2.6.5.0-292]
    at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:452) ~[hive-exec-1.2.1000.2.6.5.0-292-d249a9484f801bbb96f01e7bbd357a58127aaca3e59c783a90c062bf99c9310d.jar:1.2.1000.2.6.5.0-292]
    ... 16 more

나는 모든 맵리 듀스에서 작동하지만 TEZ에서 작동하지 않는 어떤 문제가 이해할 수 없었다.

나는 열 중 하나의 사용자 에이전트 문자열을 구문 분석이 쿼리에 대한 사용자 정의 함수를 사용합니다.

해결법

  1. ==============================

    1.당신은 하둡 2.7.x를 가지고 HDP 2.6.5 및 하이브 1.2,하지 하둡 / 하이브 3 호튼 웍스 - 샌드 박스를 실행하는

    당신은 하둡 2.7.x를 가지고 HDP 2.6.5 및 하이브 1.2,하지 하둡 / 하이브 3 호튼 웍스 - 샌드 박스를 실행하는

  2. ==============================

    2.내 문제를 @leftjoin 덕분에 지금은 해결됩니다. 내가 내 udf.jar 받는다는 프로젝트 (내 사용자 정의 사용자 정의 함수와 항아리)에서이 라이브러리를 사용하는 것을집니다 :

    내 문제를 @leftjoin 덕분에 지금은 해결됩니다. 내가 내 udf.jar 받는다는 프로젝트 (내 사용자 정의 사용자 정의 함수와 항아리)에서이 라이브러리를 사용하는 것을집니다 :

    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>3.1.1</version>
    </dependency>
    

    하지만 내 하이브 버전은 1.2.1이다.

    그래서,이 추가 :

    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>1.2.1</version>
    </dependency>
    

    나를 위해 고정 다.

    당신이 언급되고 udf.jar 내 로그에 볼 수 있습니다. 이것은 내가 추가 항아리 / 경로 / 병 /에 명령을 추가 한 병이지만, 오류가 정말 비밀입니다 ...

    또한, 나는 당신이 당신의 세션에 udf.jar을 추가하고 당신이 당신의 쿼리를 사용하지 않는 경우에도이 오류가 계속 얻을 것이다 언급하고 싶다.

  3. from https://stackoverflow.com/questions/53915059/how-can-i-fix-java-lang-illegalargumentexception-unrecognized-hadoop-major-vers by cc-by-sa and MIT license