[HADOOP] Hive에 문자열 분할 기능이 있습니까?
HADOOPHive에 문자열 분할 기능이 있습니까?
내가 하이브에 내장 된 문자열 분할 기능을 찾고 있는데? 예 : String의 경우
A | B | C | D | E
다음과 같은 기능을 원합니다. 배열 분할 (문자열 입력, 문자 구분 기호)
그래서 나는 [A, B, C, D, E]로 돌아 간다.
그런 내장 된 분할 기능이 Hive에 존재합니까? regexp_extract와 regexp_replace 만 볼 수 있습니다. 나는 indexOf ()와 split ()을보고 싶다. 문자열 함수.
감사
아제이
해결법
-
==============================
1.정규식을 기반으로하는 분할 함수가 있습니다. 이 튜토리얼에는 나열되어 있지 않지만 wiki의 언어 매뉴얼에 나와 있습니다.
정규식을 기반으로하는 분할 함수가 있습니다. 이 튜토리얼에는 나열되어 있지 않지만 wiki의 언어 매뉴얼에 나와 있습니다.
split(string str, string pat) Split str around pat (pat is a regular expression)
귀하의 경우, 구분 기호 "|" 정규 표현식으로 특별한 의미가 있으므로 "\\ |"로 언급해야합니다.
-
==============================
2.Hive의 split에 대한 또 다른 흥미로운 사용법은 테이블의 열 ipname에 "abc11.def.ghft.com"값이 있고 "abc11"을 꺼내기를 원할 때입니다.
Hive의 split에 대한 또 다른 흥미로운 사용법은 테이블의 열 ipname에 "abc11.def.ghft.com"값이 있고 "abc11"을 꺼내기를 원할 때입니다.
SELECT split(ipname,'[\.]')[0] FROM tablename;
-
==============================
3.Bkkbrad가 준 답변에 대한 설명.
Bkkbrad가 준 답변에 대한 설명.
나는이 제안을 시도했지만 그것은 나를 위해 작동하지 않았다.
예를 들어,
split('aa|bb','\\|')
생산 :
["","a","a","|","b","b",""]
그러나,
split('aa|bb','[|]')
원하는 결과를 얻었습니다.
["aa","bb"]
메타 문자 '|'포함 대괄호 안에 대문자로 해석되지 않고 문자 그대로 해석됩니다.
regexp의이 동작을 상세히 설명하려면 다음을 참조하십시오. http://www.regular-expressions.info/charclass.html
from https://stackoverflow.com/questions/4065999/does-hive-have-a-string-split-function by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] `hadoop dfs '와`hadoop fs`의 차이점 [닫힘] (0) | 2019.06.06 |
---|---|
[HADOOP] YARN의 컨테이너 란 무엇입니까? (0) | 2019.06.06 |
[HADOOP] Hadoop 사용 : localhost : 오류 : JAVA_HOME이 설정되지 않았습니다. (0) | 2019.06.06 |
[HADOOP] MapReduce / Hadoop을 사용하여 큰 데이터 정렬하기 (0) | 2019.06.06 |
[HADOOP] 'hadoop fs -head'쉘 명령이없는 이유는 무엇입니까? (0) | 2019.06.06 |