[HADOOP] 다른 데이터 유형 그룹과 두 개의 열을 비교하는 방법
HADOOP다른 데이터 유형 그룹과 두 개의 열을 비교하는 방법
다른 그룹에 데이터 유형에서 비교를 수행 할 때 잠재적 인 데이터 손실을 처리하는 방법 : 이것은 내가 어제 제기 질문의 연장이다
HIVE에서는 인라인 SELECT 절 내에서 서로 다른 데이터 유형 그룹에있는 두 개의 열 사이의 비교를 수행 할 수있다? 내가 먼저 들어오는 메타 데이터가 각 열에 대해 무엇인지 확인한 다음 사용하는 것이 CAST 무엇을 선택합니다 논리를 제공해야합니다.
CASE
WHEN Column1 <=> Column2 THEN 0 -- Error occurs here if data types are in different data type groups (i.e., BIGINT <=> STRING)
ELSE 1
END
이것이 가능하지 않다면, 메타 데이터를 검색하고 특정 규칙에 따라 CAST'ing을 수행하는 해결 방법은? 예를 들어, :
그런 것처럼 열 2 BIGINT을 캐스팅 한 다음 비교를 수행한다. 가능한 가장 간단한 해결책이 요구된다. 나는 SELECT 문을 생성하는 기본 시스템에 상당한 코드를 변경할 필요가 없습니다 기대하고있다.
업데이트 2 : Sqoop을 쿼리를 생성하고 해당 시스템에 두 개의 열을 비교하는 SELECT 절을 수정하는 기능이 백엔드 시스템이있다. 우리가로 실행하는 문제는 사용되는 열을 암시 적으로 우리가 실행중인 HIVE / 클라우 데라의 이전 버전에 변환 할 수 있다는 점이다. 이제 우리는 암시 적 데이터 형식 변환을 지원하지 않는 버전으로 업그레이드하는 것을, 우리는 데이터 형식 변환을 지원하는 계속하는 가장 간단한 해결책을 찾을 필요가있다. 불행하게도,이 백 엔드에서 사용 가능한 메타 데이터가 없다, 그래서 SELECT 절에 그것을 밖으로 해킹을 시도하고있다
해결법
-
==============================
1.캐스트 암시 좋은 생각이다 :
캐스트 암시 좋은 생각이다 :
CASE WHEN Column1 <=> cast(Column2 as bigint) THEN 0 ELSE 1 END
캐스팅 할 수없는이 경우, 캐스트의 결과는 NULL이다.
from https://stackoverflow.com/questions/58240566/how-to-compare-two-columns-with-different-data-type-groups by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 일반 특권의 MR 작업을 실행하는 방법 (0) | 2019.10.10 |
---|---|
[HADOOP] 드라이버 클래스 컴파일 오류 - 하둡 맵리 듀스 (0) | 2019.10.10 |
[HADOOP] 하둡 DBWritable : 하둡 감속기에서 MySQL의 레코드를 삽입 할 수 없습니다 (0) | 2019.10.09 |
[HADOOP] 하이브 설정 hive.optimize.sort.dynamic.partition (0) | 2019.10.09 |
[HADOOP] 하이브는 자바 9 지원됩니까? [복제] (0) | 2019.10.09 |