복붙노트

[HADOOP] 하이브 및 정규 표현

HADOOP

하이브 및 정규 표현

사용자 이름에있는 모든 IP 주소를 필터링하려고합니다. 그러나 이것은 내 쿼리에서 제대로 작동하지 않습니다.

select distinct regexp_extract(username, '^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$', 0) from ips. 

문제는 그가 심지어 IP 주소로 1000000로 숫자를 인식한다는 것입니다. 어떤 생각을 고칠 수 있을까요?

해결법

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

    1.특수 문자를 피하려면 추가 백 슬래시가 필요합니다. 또는 \ s. 위키에 대한 더 많은 정보가 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF에 있습니다.

    특수 문자를 피하려면 추가 백 슬래시가 필요합니다. 또는 \ s. 위키에 대한 더 많은 정보가 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF에 있습니다.

    다음과 같이 시도해보십시오.

    select
        distinct regexp_extract(ip, '^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$', 0) as match
    from
        ips
    having
        match <> "";
    
  2. from https://stackoverflow.com/questions/18289445/hive-and-regular-expression by cc-by-sa and MIT license