Ответ 1
В связи с проектом по созданию инструментария для инструментов для наших парней, Я построил один из них около двух месяцев назад. У моего работодателя нет проблем, если я его открываю, поэтому, если кто-то заинтересован, я могу поставить его на моем реестре github. Я считаю, что это наиболее полезно для этой группы, если я создаю R-пакет. Я не смогу сделать это сразу, хотя потому что мне нужно исследовать документы по созданию пакетов с помощью кода, отличного от R (это может быть так же просто, как бросить файлы байт-кода python в /exec вместе с подходящей исполняемой средой python, но я понятия не имею).
Я действительно был удивлен, что мне нужно провести такой проект. Есть, по крайней мере, несколько превосходных open-source и бесплатных парсеров/зрителей файлов журналов (включая превосходные Webalyzer и AWStats), но ни журналы журналов анализа данных (журналы сеанса синтаксического анализа не являются основным вариантом использования для обоих).
Если вы не знакомы с журналами ошибок или с разницей между ними и доступом logs, в общем, серверы Apache (likewsie, nginx и IIS) записывают два разных журнала и сохраняют их на диске по умолчанию рядом друг с другом в том же каталоге. В Mac OS X, этот каталог в /var, чуть ниже root:
$> pwd
/var/log/apache2
$> ls
access_log error_log
Для диагностики сети журналы ошибок часто гораздо полезнее журналов доступа. Они также значительно сложнее обрабатывать из-за неструктурированного характера данных во многих областях и более значительно, поскольку файл данных вы остаетесь после того, как синтаксический анализ является нерегулярным временным рядом - у вас может быть несколько записей, привязанных к одной временной метке, затем следующая запись - через три секунды и т.д.
Мне нужно приложение, которое я мог бы забрасывать в необработанные журналы ошибок (любого размера, но обычно несколько сотен МБ за раз), имеет что-то полезное, выходящее из другого конца - которое в этом случае должно было быть пре- упакованную аналитику, а также куб данных, доступный внутри R для анализа командной строки. Учитывая это, я закодировал синтаксический анализатор raw-log в python, в то время как процессор (например, грид-вывод парсера для создания регулярного временного ряда) и все аналитики и визуализация данных, я закодированные в R.
Я долгое время создавал инструменты для аналитики, но только в прошлом четыре года я использовал R. Таким образом, мое первое впечатление - сразу после разбора необработанного файла журнала и загрузки кадра данных в R - это то, с чем приятно работать R и как оно так хорошо подходит для задач такого рода. Несколько приятных сюрпризов:
-
Сериализация. Для сохранения рабочих данных в R есть одна команда (спасти). Я знал это, но я не знал, насколько эффективен этот двоичный формат. Фактические данные: на каждые 50 МБ сырых логфайлов проанализированы .RData представляет собой сжатие около 500 КБ - 100: 1. (Примечание: i подтолкнуло это примерно на 300: 1, используя таблицу данных. библиотеки и вручную задайте аргумент уровня сжатия для сохранения функция);
-
IO. My Data Warehouse в значительной степени опирается на легкую структуру данных сервер, который полностью находится в ОЗУ и записывает на диск асинхронно, называется redis. Сам по себе вопрос состоит лишь в двух лет, но уже есть клиент redis для R в CRAN (by B.W. Льюис, версия 1.6.1 на этом посту);
-
Первичный анализ данных. Целью этого Проекта было создание Библиотека для нашей сети. Ребята из Ops. Моя цель была "одна команда = один вид данных ". Так, например, я использовал отличный пакет googleVis для создания профессионально выглядящего прокручиваемые/разбитые на страницы таблицы HTML с сортируемыми столбцами, в которых i загрузил кадр данных агрегированных данных ( > 5000 строк). Только те немногие интерактивные эльмы - например, сортировка столбца - доставка полезных описательная аналитика. Другой пример: я написал много тонких обертки над некоторыми манипуляциями с данными и табличными функциями; каждый из этих функций я бы, например, привязал к кнопке с нажатием кнопки на веб-странице с вкладками. Опять же, это было приятно сделать в R, частично потому что довольно часто функция не требовала обертки, единственная команды с предоставленными аргументами было достаточно для создания полезной просмотр данных.
Несколько примеров последней пули:
# what are the most common issues that cause an error to be logged?
err_order = function(df){
t0 = xtabs(~Issue_Descr, df)
m = cbind( names(t0), t0)
rownames(m) = NULL
colnames(m) = c("Cause", "Count")
x = m[,2]
x = as.numeric(x)
ndx = order(x, decreasing=T)
m = m[ndx,]
m1 = data.frame(Cause=m[,1], Count=as.numeric(m[,2]),
CountAsProp=100*as.numeric(m[,2])/dim(df)[1])
subset(m1, CountAsProp >= 1.)
}
# calling this function, passing in a data frame, returns something like:
Cause Count CountAsProp
1 'connect to unix://var/ failed' 200 40.0
2 'object buffered to temp file' 185 37.0
3 'connection refused' 94 18.8
Первичный куб данных, отображаемый для интерактивного анализа Использование googleVis:
Таблица непредвиденных обстоятельств (из вызова функции xtab), отображаемая с помощью googleVis)