복붙노트

[HADOOP] 하이브 NVL 열의 날짜 형식을 사용할 수 없습니다 - NullpointerException

HADOOP

하이브 NVL 열의 날짜 형식을 사용할 수 없습니다 - NullpointerException

나는 HDFS를 통해 MapR Hive를 사용하고 있으며, 아래의 문제를 겪고 있습니다. 테이블의 열 유형이 '날짜'유형이면 NVL 기능이 작동하지 않습니다. 다른 데이터 유형에서도 마찬가지입니다.

그것은 단순히 던졌습니다.

NullpointerException:Null

심지어 함수를 설명하는 것은 같은 예외를 던지고있다.

여기서 친절히 도와주세요. 하이브 배포판의 버그입니까?

해결법

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

    1.해결 방법으로 문제를 직접 해결했습니다.

    해결 방법으로 문제를 직접 해결했습니다.

    날짜 유형의 경우 하이브 COALESCE 기능을 다음과 같이 사용할 수 있습니다.

    COALESCE(nt.assess_dt, cast('9999-01-01' as date))
    

    위의 대답은 다음과 같이 설명 할 수 있습니다.

    COLESCE가 반환 한 값이 동일한 유형이어야하는 NVL과 약간 다릅니다. 따라서 blank ''는 위의 예에서 COALESCE에 의해 반환 될 수 없습니다.

    이 때문에 저는 매우 큰 날짜 값인 9999-01-01을 사용하여 null 값을 나타내고 정품 날짜 값을 구별했습니다. 귀하의 날짜 열이 실제로이 큰 값을 유효한 값으로 가질 수있는 경우, 널 날짜를 나타 내기 위해 다른 유효한 날짜 값을 고려해야합니다.

    여기 및 다른 대안에 대해 자세히 알아보십시오.

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

    2.하나는 원래 요청한 NVL을 사용할 수도 있습니다.

    하나는 원래 요청한 NVL을 사용할 수도 있습니다.

    NVL(nt.assess_dt, cast('9999-01-01' as date))
    
  3. from https://stackoverflow.com/questions/32269671/hive-nvl-does-not-work-with-date-type-of-the-column-nullpointerexception by cc-by-sa and MIT license