[HADOOP] 하이브-구분 된 열을 여러 행으로 분할하고 위치를 기준으로 선택
HADOOP하이브-구분 된 열을 여러 행으로 분할하고 위치를 기준으로 선택
쉼표로 구분 된 데이터를 기반으로 열을 분할하는 방법을 찾고 있습니다. 아래는 내 데이터 세트입니다
id col1 col2
1 5,6 7,8
결과를 얻고 싶습니다
id col1 col2
1 5 7
1 6 8
그에 따라 결과를 가져와야하기 때문에 인덱스의 위치가 일치해야합니다.
아래 쿼리를 시도했지만 데카르트 제품을 반환합니다.
질문:
SELECT col3, col4
FROM test ext
lateral VIEW explode(split(col1,'\002')) col1 AS col3
lateral VIEW explode(split(col2,'\002')) col2 AS col4
결과:
id col1 col2
1 5 7
1 5 8
1 6 7
1 6 8
해결법
-
==============================
1.posexplode ()를 사용하여 분할 배열에 대한 위치 인덱스 열을 만들 수 있습니다. 그런 다음 위치 인덱스가 동일한 행만 선택하십시오.
posexplode ()를 사용하여 분할 배열에 대한 위치 인덱스 열을 만들 수 있습니다. 그런 다음 위치 인덱스가 동일한 행만 선택하십시오.
SELECT id, col3, col4 FROM test lateral VIEW posexplode(split(col1,'\002')) col1 AS pos3, col3 lateral VIEW posexplode(split(col2,'\002')) col2 AS pos4, col4 WHERE pos3 = pos4;
산출:
id col3 col4 1 5 7 1 6 8
참조 : Hive 언어 매뉴얼-posexplode ()
from https://stackoverflow.com/questions/37585638/hive-split-delimited-columns-over-multiple-rows-select-based-on-position by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] "pig -x local"을 실행할 때 Windows의 Apache pig에서 "hadoop-config.cmd '가 내부 또는 외부 명령으로 인식되지 않습니다"오류가 발생 함 (0) | 2019.08.09 |
---|---|
[HADOOP] Whirr : 시작 클러스터 후 EC2에서 Hadoop 클러스터에 연결할 수 없음 (0) | 2019.08.09 |
[HADOOP] 하둡 YARN 대 원사 패키지 관리자 명령 충돌 (0) | 2019.08.09 |
[HADOOP] hadoop 클러스터의 모든 노드에서 pyspark 작업을 실행할 수 없습니다. (0) | 2019.08.09 |
[HADOOP] Apache Hadoop 데이터 출력을 MySQL 데이터베이스에 저장 (0) | 2019.08.09 |