[HADOOP] Hive에서 url 쿼리 문자열을 여러 키 - 값 쌍으로 구문 분석하는 방법
HADOOPHive에서 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.측면보기의 도움을 받아이를 수행하고 폭발시킬 수 있습니다.
측면보기의 도움을 받아이를 수행하고 폭발시킬 수 있습니다.
이것은 작동해야합니다 :
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.아래 검색어가 제대로 작동하는지 확인했습니다.
아래 검색어가 제대로 작동하는지 확인했습니다.
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;
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
'HADOOP' 카테고리의 다른 글
[HADOOP] core-site.xml에서 fs.default.name / fs.defaultFS 값을 완전히 존중하지 않는 하이브 (0) | 2019.07.15 |
---|---|
[HADOOP] Hive (get_json_object)를 사용하여 구조체 배열을 쿼리하는 방법? (0) | 2019.07.14 |
[HADOOP] 케르베로스 란 무엇입니까? (0) | 2019.07.14 |
[HADOOP] FSDataInputStream에서 FileInputStream으로 변환 (0) | 2019.07.14 |
[HADOOP] Spark RDD를 하이브 테이블에 저장하십시오. (0) | 2019.07.14 |