Я хочу извлечь (ip, requestUrl, timeStamp) из журналов доступа для загрузки в базу данных улья. Одна строка из журнала доступа выглядит следующим образом.
<code>
66.249.68.6 - - [14/Jan/2012:06:25:03 -0800] "GET /example.com HTTP/1.1" 200 708 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Я пытался со следующими и несколькими вариантами регулярных выражений, но безуспешно. (Загруженная таблица содержит все значения NULL, указывающие, что регулярное выражение не соответствует входным данным).
<code>
CREATE TABLE access_log (
remote_ip STRING,
request_date STRING,
method STRING,
request STRING,
protocol STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]<em>) . . [([^]]+)] \"([^ ]</em>) ([^ ]<em>) ([^ \"]</em>)\" *",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s"
)
STORED AS TEXTFILE;
Я не очень опытен в регулярных выражениях. Кто-нибудь может мне помочь с этим?