응용 보안 - 1주차 (5) R설치 및 FailedRequestsByDay 차트 출력

0. (4)에 이어서..



마지막으로 select 했던 데이터를 저장합시다..
근데 여기서 주의할 점!
txt 파일 형태로 정상적으로 열려면

ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE

요놈을 추가해 줘야한다..
요놈참고

INSERT OVERWRITE LOCAL DIRECTORY 
'/mnt/hgfs/BigDataAnalytics/Project1/FailedRequestsByDay'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE

SELECT a.yearmonthday, a.failedrequest_freq / b.successfulrequest_freq AS failratio
FROM FailedRequestsTimeSeriesByDay a
JOIN SuccessfulRequestsTimeSeriesByDay b
ON a.yearmonthday = b.yearmonthday
ORDER BY yearmonthday ASC;



저기서 000000_0 을 notepad로 열어보면

짜자잔~

1. R을 이용한 FailedRequestsByDay 분석

  • Threshold
  • Time series data : 시계열 데이터
  • Correlation : 비례하면 양의 상관관계, 반비례하면 음의 상관관계라고 이해하면 쉬움. 0은 두 관계가 서로 영향 받지 않음
  • Autocorrelation : 시계열 데이터에 따라 변수간에 나타나는 상관관계.
  • Cross-correlation : 2개의 시계열 데이터가 변하는 관계를 설명함

그리고 R을 설치해야 하는데 처음이라 모든게 어색하다.. 이분이 설명하시는거 고대로 따라가자

이제 본격적으로 강의 노트에 있는 코드를 실행해볼 차례인데..
교수님은 여느때나 그렇듯이(?) 순순히 실행되는 코드를 주시지 않았다.

우선 fBasics 라이브러리를 참조하기위해 fBasics package 설치가 필요하다.

install.packages("fBasics")

이후 코드를 복붙하면 될 것 같지만 그렇게 단순하지 않다.
read.table 할 때 우선 C:~ 어쩌고 되어 있는 경로에서의 백슬래시를 모두 '/' 일반 슬래시로 대체해야하고, 아까 그 00000_0 파일의 확장자도 txt로 바꾸어 인식할 수 있게 해야한다.
디렉토리 경로 형식에 관한 조언은 이 블로그를 참고했다.

이제 아래 코드를 실행해보자.

rm(list=ls())

library(fBasics)

failedRequests <- read.table("C:/mnt/hgfs/BigDataAnalytics/Project1/FailedRequestsByDay/000000_0.txt", sep="")

colnames(failedRequests) <- c("Date", "FailedRequestsRatio")

#standard deviation = sd
stdev <- sd(failedRequests$FailedRequestsRatio)

avg <- mean(failedRequests$FailedRequestsRatio)

avgPlus2Stdev <- avg + 2*stdev

failedRequests[failedRequests[,2]>avgPlus2Stdev,]

pdf("PlotOfFailedRequestRatioSeries.pdf")
plot(failedRequests[,2], type='l', main="Ratio of Failed Server to Successful Requests by Day",
     xlab="Day", ylab="Ratio of Failed Requests to Successful Requests")
lines(rep(avg, length(failedRequests[,2])))
lines(rep(avgPlus2Stdev, length(failedRequests[,2])), lty=2)
legend("topright", c("Average", "2 X Standard Deviation"), lty=c(1,2))
dev.off()

pdf("FailedRequestsAutoCorrelation.pdf")
acfPlot(failedRequests[,2], lag.max=60)
dev.off()

결과는 다행히 똑같은 그래프가 출력되었다.

그렇게 교수님이 내신 1주차 과제가 성공적으로 완료되었다.
✌(-‿-)✌

전자는 특정 날짜에 어떤 request들이 있었는지 파악할 수 있는 그래프이고, 후자는 autocorrelation 값들을 나타낸 것이다.

좋은 웹페이지 즐겨찾기