티스토리 뷰

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'));
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함