Я хочу использовать R для некоторого статистического анализа информации файла журнала, но обнаружил, что даже "ограниченный" RPM R-core имеет множество еще не установленных зависимостей. Я не хочу устанавливать так много пакетов для периферийных нужд.
Есть ли облегченные альтернативы для простого статистического анализа в RHEL 6? У меня есть сценарий R, который принимает на стандартный ввод большой набор значений - по одному значению в строке - и распечатывает минимальное, максимальное, среднее, медианное значение, 95-й процентиль и стандартное отклонение.
Для большего контекста я использую grep и awk, чтобы найти запросы GET для определенного пути в наших файлах журнала веб-сервера, получить время отклика и вычислить показатели, перечисленные выше, чтобы измерить влияние на производительность изменений в веб-приложении. .
Мне не нужны никакие возможности построения графиков, только простые вычисления. Я что-то упустил?
Вот минимальное, максимальное, общее, среднее и медианное значение в awk
:
BEGIN {
min="unset"
max=0
}
{
values[NR] = $1
total += $1
average = total/NR
if ($1 > max) max = $1
if (min == "unset" || $1 < $min) min = $1
}
END {
median=values[int(NR/2)]
print "MIN:", min
print "MAX:", max
print "TOTAL:", total
print "MEAN:", average
print "MEDIAN:", median
}
Стандартное отклонение и 95-й процентиль оставлены читателю в качестве упражнения.
Используйте питон NumPy пакет, который вы сможете легко установить с помощью yum install numpy
или pip install numpy
:
import numpy
n = numpy.random.rand(100)
print 'min:', n.min()
print 'max:', n.max()
print 'mean:', n.mean()
print 'median:', numpy.median(n)
print '95th:', numpy.percentile(n, 95)
print 'stddev:', n.std()
Это избавит вас от повторного внедрения базовой статистики с нуля. В общем, Python с NumPy и SciPy это многофункциональная альтернатива R, которая также часто имеет лучшая производительность.
Кроме того, вместо того, чтобы писать собственный файл журнала, анализируйте с помощью grep
и awk
вы можете использовать что-то вроде: pylogsparser которая представляет собой «библиотеку парсеров журналов, упакованную с набором готовых к использованию парсеров (DHCPd, Squid, Apache, ...)».
Любой язык программирования / сценариев, такой как Perl, Python или Ruby, сделает это легко, и bc
также доступен.