Подключен к статье, в этой статье улей, связанные очистки искусства и рассчитан для выполнения данных
Помещение для хранения. Сырая информация журнала
Таблица улей поддерживает регулярные выражения, как хранить и читать следующим образом:
CREATE EXTERNAL TABLE nginxlog ( IP - STRING, времени загустевания, строку запроса, статус STRING, размер STRING, Referer STRING, агент STRING) ROW FORMAT SERDE ' org.apache.hadoop.hive.serde2.RegexSerDe ' С SERDEPROPERTIES ( "input.regex" = "( [ ^ ] * ) (\\ [ [^ \\ ] ] * \\]) (\" [ ^ \ " ] * \") ( - | [ 0-9 ] * ) ( - |[ 0-9 ] * ) (\ " [ ^ ] * \ ") (\" [ ^ \\\" ] * \ ")" ) ЗАПОМНЕННЫЙ AS TEXTFILE МЕСТА '/ тест';
Наш формат данных журнала access.log выглядит следующим образом:
192.168.111.1 [29 / Июль / 2019: 19: 58: 55 +0800] «GET /big.png?url=http://127.0.0.1/a.html&urlname=a.html&scr=1366x768&ce=1&cnv=0.6735760053703803&ref= http://127.0.0.1/b.html&stat_uv=67256303183188720208&stat_ss=6553789412_7_1564401535833 HTTP / 1.0" 200 37700 "http://127.0.0.1/a.html" «Mozilla / 5.0 (Windows NT, 10,0; WOW64) AppleWebKit / 537,36 (KHTML , как Gecko) Chrome / 63.0.3239.132 Safari / 537,36"
Так построить регулярное выражение заявление таблицы
([^] *) (\\ [[^ \\]] * \\]) (\ "[^ \"] * \ «) (- | [0-9] *) (- | [0-9 ] *) (\ "[^] * \") (\ "[^ \\\"] * \ «) и выше , должны соответствовать данным, в
первую очередь должны понять это регулярные выражения в каждом пакете значение:
([^] *) // который соответствует любому символу, кроме пространства, в выражении ^ кронштейна, она не принимает время он представляет собой набор символов.
(- | [0-9] *) // указывает на совпадение - или более цифр от 0 до 9
(\ «[^ \\\»] * \ «) // \» представляет собой фактическую двойную кавычку перед кавычками \ символ язык Java, чтобы избежать кавычек двойных после этого, типа не имеет ничего общего с положительным
( \\ [[^ \\]] * \\]) // \\ [к обычному типу \ [, то есть, фактический левый кронштейн положительный знак в формуле
Кроме того улого формального применения до этого регулярного типа, предпочтительно в блок тестового кода проверки JAAV из:
@Test общественности недействительным TestLog () { Строка регулярное выражение = "(([^] *) (\\ [[^ \\]] * \\]) (\" [^ \ "] * \") (- | [ 0-9] *) (- | [0-9] *) (\ "[^] * \") (\ "[^ \\\"] * \ "))" , шаблон шаблон = Pattern.compile ( REGEX); Строка данных = "192.168.111.1 [21 / Jul- / 2019: 15: 53: 07 +0800}] \" ГЭТ /favicon.ico на HTTP / 1.1 \ "404 555 \" http://192.168.111.123/ \ "\" Mozilla / 5.0 (Windows NT 10,0; WOW64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 70.0.3538.67 Safari / 537.36 \ "" ; Сличитель Сличитель = Pattern.matcher (данные);
// Примечание: матчи () метод , чтобы соответствовать всей строке , представленной, найти () метод может быть представлен путем сопоставления подстроки ПЧА (Matcher. матчи ()) { для (INT = 0; г <matcher.groupCount (); я ++ ) { System.out.println (matcher.group (я + 1 )); } } Еще { System.out.println ( "ничего не найдено% п." ); } }
Вторичная переработка сырья информация журнала -> промежуточная обработка данных генерируется
III. Показатели KPI производят окончательные статистические данные из промежуточной обработки данных