본문 바로가기
빅데이터/hive

[hive] UDF에서 발생하는 argument type mismatch 오류 수정

by hs_seo 2020. 1. 14.

hive udf에서 java.lang.illegalargumentexception argument type mismatch 오류가 발생하는 경우는 파라미터로 전달하는 타입이 설정과 달라서 발생합니다.

 

아래와 같은 경우 evaluate UDF의 입력값으로 String 이 전달되어야 하는데 다른 타입이 전달되면 오류가 발생합니다. 일반적인 경우에는 타입이 다르다는 것을 알 수 있지만 함수의 중첩으로 처리하는 경우에는 이 오류를 정확하게 확인하기가 어렵습니다.

 

public class SampleUDF extends UDF {

    public Text evaluate(String text) {
        // 입력받은 문자를 대문자로 반환
        return new Text(text.toUpperCase());
    }
}

함수의 중첩

아래의 경우 funcB의 결과가 funcA의 입력으로 전달되는데 이때 funcB의 결과를 Text타입으로 반환할 때 funcA의 입력을 String으로 선언하면 오류가 발생하게 됩니다. 따라서 함수의 중첩을 이용할 때는 결괏값을 정확하게 선언해야 합니다.

SELECT funcA(funcB('A'));
반응형