복붙노트

[HADOOP] 다른 그룹에 데이터 유형에서 비교를 수행 할 때 어떻게 잠재적 인 데이터 손실을 처리하기 위해

HADOOP

다른 그룹에 데이터 유형에서 비교를 수행 할 때 어떻게 잠재적 인 데이터 손실을 처리하기 위해

배경: 우리 그룹은 6.1.1에 클라우 데라 업그레이드를 겪고 난 데이터 형식에서 암시 적 데이터 형식 변환의 손실을 처리하는 방법을 결정하는 임무가 주어왔다. 관련 릴리즈 노트 자세한 내용은 아래 링크를 참조하십시오.

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_611_incompatible_changes.html#hive_union_all_returns_incorrect_data

뿐만 아니라이 문제는 UNION 모든 쿼리에 영향을 미치지 만 다른 데이터 유형 (즉, 문자열 BIGINT하는)의 열을 비교를 수행하는 기능이있다 않습니다.

이 그룹은 우리가 기본 테이블의 메타 데이터를 변경하지 않는 것을 결정했다. 그래서 솔루션은 데이터를 캐스팅하기 위해 CAST () 함수를 사용하여 잠재적 인 데이터 손실을 허용하는 것입니다. UNION ALL의 경우, 우리는 대상 테이블의 메타 데이터에 캐스팅. 비교를 수행 할 때, 나는 잘못된 결과를받지 않고 비교를 수행 할 수있는 간단하고 쉬운 방법을 결정하기 위해 노력하고 있습니다.

질문:

단순히 STRING 또는 VARCHAR ()가 비교를 수행 중 하나에 이르기까지 모든 캐스팅 할 수 있습니까? 잘못된 결과를 만들 수있는 잠재적 인 문제가 있습니까?

최신 정보: 이 방법에 문제가있는 경우,이 처리하는 올바른 해결책이 무엇입니까?

참고 :이 하둡 / HIVE 작업을 처음 참여하고 내가 RDBMS의 땅에서 내가 아는 모든 것을 항상 적용되지 않는다는 것을 배웠습니다.

해결법

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

    1.당신은 문제가있는 것 또한 가능하다. 예를 들어, 다음 INT, 문자열을 경우 비교 :

    당신은 문제가있는 것 또한 가능하다. 예를 들어, 다음 INT, 문자열을 경우 비교 :

    그러나 문자열로 :

    당신은 날짜와 유사한 문제를 얻을 수있다, 나는 생각한다.

  2. from https://stackoverflow.com/questions/58227352/how-to-handle-potential-data-loss-when-performing-comparisons-across-data-types by cc-by-sa and MIT license