2019년 10월 10일 목요일

[ERROR] HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:

Polybase로 EXTERNAL TABLE을 만드려고 할 때 다음과 같은 에러가 발생했다.

HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException: 



원인은 confidence 컬럼의 DECIMAL 타입이 문제였고 confidence이 부동소수점으로 간주되어 DECIMAL(NUMERIC) 타입을 사용할 수가 없는 것이었다.

이를 근사치를 표현하는 부동소수점 표현 타입인 FLOAT으로 바꾸면 바로 해결이 된다.


아래처럼 FLOAT 형식으로 바꾸어서 실행한다.


결과는 다음처럼 잘 나온다.



그래도 같은 에러가 떨어진다면 이상한 문자가 섞여있는 것으로 추정할 수 있다.

예를 들어서 float형식에 2.0834406E-5 같이 E가 섞여서 들어온다면 같은 문제가 발생한다.
저런 경우 E를 제거하고  0.00002083441 식으로 넘기던지 하면 해결될 것이다.
(예외상황 제보해주신 김현경님 감사합니다.)

댓글 1개:

  1. 에러나서 당황스러웠는데 E 없애니까 해결됬습니다ㅎㅎ
    유용한 블로그네요~ 글 자주 올려주세요!

    답글삭제