Hadoop Hive - Сплит строка - PullRequest
       6

Hadoop Hive - Сплит строка

2 голосов
/ 20 апреля 2011

Я - новый улей.

Мой запрос: В файле журнала у нас есть поле запроса, подобное этому "GET /img/home/search-user-ico.jpg HTTP/1.1 ". Доступно более 10 000 записей.

Пример:

" GET /img/home/search-user-ico.jpg HTTP / 1.1"
" GET /JavaScript/jquery-1.4.2.min.js HTTP / 1.1 "" GET / ems / home HTTP / 1.1 "" POST / ir HTTP / 1.1 "" GET / CSS / jquery / themes / base/jquery.ui.button.css HTTP / 1.1 "" GET /CSS/jquery/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png HTTP / 1.1 "
" GET /JavaScript/jquery/jquery-ui-1.8.5.custom.min.js HTTP / 1.0 "

Из этого поля" GET /img/home/search-user-ico.jpg HTTP / 1.1 "я хочу только эту часть / img /home / search-user-ico.jpg , я хочу отделить его от GET, POST и HTTP / 1.1, поэтому, пожалуйста, помогите мне, как разделить это, используя строковые функции, доступные в вики. Я пробовал использовать некоторые из доступных синтаксисовв wiki.but я сейчас беспомощен.

я пробовал с синтаксисом вроде

select regexp_extract (request, 'a-zA-Za-zA-Z [a-zA-Z]', 2) из ​​предела лог-файла 10;

выберите regexp_extract (запрос, 'GET (\ s) ([a-zA-Z]) ', 2) из ​​предела лог-файла 10;

выберите regexp_extract (запрос,'. ? (\ s) (. ?) (\ s) (. s) (.*?) ', 2) из ​​предела лог-файла 10;

выберите regexp_extract (запрос,'. (\ s) (. ) (\ s) (. *) ', 2)из лог-файла предел 10;

Спасибо -Джо

1 Ответ

1 голос
/ 20 апреля 2011

Я использовал RegexBuddy и предоставленные вами образцы и получили только URL с этим регулярным выражением ([\S]*) HTTP Это предполагает, что в URL не будет буквальных пробелов, закодировано нормально.

Включение его в запрос улья должно выглядеть примерно так:

select regexp_extract(request, ' (\\S*) HTTP', 1) from logfile;

(Замечу, перед (\\S) есть пробел. Это может быть довольно очевидно, но я просто хотел бы прокомментировать его, если оно пропущено)

Я провел небольшое тестирование в улье, и оно работает, по крайней мере с тестами, подобными предоставленным образцам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...