[HADOOP] 하이브 문자열에서 중복을 제거하는 방법?
HADOOP하이브 문자열에서 중복을 제거하는 방법?
나는 열 (문자열) 쉼표를 중복 값으로 구분했습니다. 중복을 제거하고 싶습니다. 예 : column_name ----------------- 총, 총, 남자, 총, 남자 셔틀, 적, 적, 실행 명중하다, 추격하다
나는 아래와 같은 결과를 원한다.
column_name ---------------- 총기 경비원 셔틀, 적, 달려라. 명중하다, 추격하다
하이브 데이터베이스를 사용하고 있습니다. 제발 도와주세요.
해결법
-
==============================
1.이것은 모든 단어의 마지막 발생을 유지합니다. 예 : 'hello, world, hello, world, hello'는 '세계, 안녕하세요'가 될 것입니다.
이것은 모든 단어의 마지막 발생을 유지합니다. 예 : 'hello, world, hello, world, hello'는 '세계, 안녕하세요'가 될 것입니다.
select regexp_replace ( column_name ,'(?<=^|,)(?<word>.*?),(?=.*(?<=,)\\k<word>(?=,|$))' ,'' ) from mytable ;
+-------------------+ | gun,man | | shuttle,enemy,run | | hit,chase | +-------------------+
이렇게하면 모든 단어가 처음으로 나옵니다. 예 : '안녕하세요, 세상, 안녕하세요, 세계, 안녕하세요'는 '안녕하세요, 세상'
select reverse ( regexp_replace ( reverse(column_name) ,'(?<=^|,)(?<word>.*?),(?=.*(?<=,)\\k<word>(?=,|$))' ,'' ) ) from mytable ;
예 : '체리, 애플, 체리, 체리, 체리, 바나나, 애플'은 '애플, 바나나, 체리'
select regexp_replace ( concat_ws(',',sort_array(split(column_name,','))) ,'(?<=^|,)(?<word>.*?)(,\\k<word>(?=,|$))+' ,'${word}' ) from mytable ;
from https://stackoverflow.com/questions/42874823/how-to-remove-duplicates-in-hive-string by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 감속기에서 데이터 스큐를 처리하는 Hadoop (0) | 2019.06.10 |
---|---|
[HADOOP] Hive (JSON 파일)를 사용하여 Hbase에 데이터 삽입 (0) | 2019.06.10 |
[HADOOP] 명령 줄을 사용하여 hdfs 분산 파일에서 총 줄 수 찾기 (0) | 2019.06.10 |
[HADOOP] Mac OS에서 hadoop 실행 (0) | 2019.06.10 |
[HADOOP] Spark Streaming에서 출력 파일 이름 변경 (0) | 2019.06.10 |