복붙노트

[HADOOP] Hive에서 url 쿼리 문자열을 여러 키 - 값 쌍으로 구문 분석하는 방법

HADOOP

Hive에서 url 쿼리 문자열을 여러 키 - 값 쌍으로 구문 분석하는 방법

도메인 / 키 / 값의 고유 한 조합으로 그룹화 된 도메인, 키, 값 및 개수가있는 테이블을 생성하는 하이브 쿼리를 실행하려고합니다.

데이터의 예 :

http://www.aaa.com/path?key_a=5&key_b=hello&key_c=today&key_d=blue
http://www.aaa.com/path?key_a=5&key_b=goodb&key_c=yestr&key_d=blue
http://www.bbb.com/path?key_a=5&key_b=hello&key_c=today&key_d=blue
http://www.bbb.com/path?key_a=5&key_b=goodb&key_c=ystrd

원하는 출력 :

aaa.com | key_a | 5 | 2
aaa.com | key_b | hello | 1
aaa.com | key_b | goodb | 1
aaa.com | key_c | today | 1
aaa.com | key_c | yestr | 1
aaa.com | key_d | blue | 2
bbb.com | key_a | 5 | 2
bbb.com | key_b | hello | 1
bbb.com | key_b | goodb | 1
bbb.com | key_c | today | 1
bbb.com | key_c | ystrd | 1
bbb.com | key_d | blue | 1

여기 내가 사용해온 것이있다.

"select parse_url(url,'HOST'), str_to_map(parse_url(url,'QUERY'),'&','='), count(1) from url_table group by select parse_url(url,'HOST'), str_to_map(parse_url(url,'QUERY'),'&','=') limit 10;"

내가 어디로 잘못 가고 있니? 특히 내가 엉망이라고 생각하는 부분은 쿼리 문자열을 여러 키 - 값 쌍으로 분리하는 방법을 모르기 때문에 str_to_map (parse_url (url, 'QUERY'), '&', '=') 및 그런 다음 올바르게 그룹화하십시오.

해결법

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

    1.측면보기의 도움을 받아이를 수행하고 폭발시킬 수 있습니다.

    측면보기의 도움을 받아이를 수행하고 폭발시킬 수 있습니다.

    이것은 작동해야합니다 :

    hive> select parse_url(url,'HOST') as host, v.key as key, v.val,
    count(*) as count from url u LATERAL VIEW
    explode(str_to_map(parse_url(url,'QUERY'),'&','=')) v as key, val
    group by parse_url(url, 'HOST'), v.key, v.val;
    
  2. ==============================

    2.아래 검색어가 제대로 작동하는지 확인했습니다.

    아래 검색어가 제대로 작동하는지 확인했습니다.

    SELECT
      parse_url(url, 'HOST') AS host,
      q.key AS key,
      q.val AS val,
      COUNT(*)
    FROM <your_table_with_url_as_a_field>
    LATERAL VIEW explode(str_to_map(parse_url(url,'QUERY'),'&','=')) q AS key, val
    WHERE parse_url(url,'QUERY') IS NOT NULL
    GROUP BY parse_url(url, 'HOST'), q.key, q.val
    ORDER BY host, key, val;
    
  3. from https://stackoverflow.com/questions/19143562/how-to-parse-url-query-string-in-hive-to-multiple-key-value-pairs by cc-by-sa and MIT license