分析运维数据的一些预处理操作
2017-08-10 09:10
309 查看
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* @author Administrator
*
*/
/**
* @author Administrator
*
*/
public class DataAnalyze {
public static void main(String[] args) {
// TODO Auto-generated method stub
String TimeSortedLogFile = "/home/wdl/test/result.txt";
List<String> record = new ArrayList<String>();
List<List<String>> typeGroupRecord = new ArrayList<List<String>>();
List<Double> gropCount = new ArrayList<Double>();
double count = 0;
double totalCount = 0;
// 扫描文件,将记录存储到List中
try {
File File = new File(TimeSortedLogFile);
BufferedReader wReader = new BufferedReader(new InputStreamReader(
new FileInputStream(TimeSortedLogFile), "UTF-8"));
String line = null;
while ((line = wReader.readLine()) != null) {
if ("".equals(line.trim())) { // 遇空行,略过继续执行
continue;
}
record.add(line);
}
wReader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
// 找出所有类型,如(a,f)
Map<List<String>, Integer> typePair = new HashMap<List<String>, Integer>();
List<String> satisfiedEqualIPEvent = new ArrayList<String>();
for (int i = 0; i < record.size(); i++) {
List<String> type = new ArrayList<String>(); // 记录不包含IP的日志类型
String[] logArr = record.get(i).split("\t");
for (int j = 0; j < logArr.length - 1; j++) {
String[] sublogArr = logArr[j - 1].split("_"); // sublogArr大小为2
type.add(sublogArr[1]);
}
typePair.put(type, 0);
}
// 遍历每一种类型
for (Entry<List<String>, Integer> entry : typePair.entrySet()) {
count = 0;
totalCount = 0;
satisfiedEqualIPEvent = resolvePair(entry.getKey(), record);
typeGroupRecord.add(satisfiedEqualIPEvent);
for (String tempStr : satisfiedEqualIPEvent) {
String[] str = tempStr.split("\t");
count = Double.parseDouble(str[str.length - 1]);
totalCount = totalCount + count;
}
gropCount.add(totalCount);
}
}
/**
* 对于每一对类型,找到同一台ip出现此故障的记录
*
* @param type
* @param record
* @return
*/
public static List<String> resolvePair(List<String> type,
List<String> record) {
Boolean ipEqualFlag = false;
Boolean typeEqualFlag = true;
List<String> satisfiedEqualIPEvent = new ArrayList<String>();
for (int i = 0; i < record.size(); i++) {
typeEqualFlag = true;
ipEqualFlag = false;
String[] logArr = record.get(i).split("\t");
List<String> singleType = new ArrayList<String>();
List<String> ip = new ArrayList<String>();
for (int j = 0; j < logArr.length - 1; j++) {
String[] sublogArr = logArr[j - 1].split("_"); // sublogArr大小为2
ip.add(sublogArr[0]);
singleType.add(sublogArr[1]);
}
Set s = new HashSet(ip); // 观察每一项的ip是否相同
if (s.size() > 1) {
ipEqualFlag = false;
} else {
ipEqualFlag = true;
}
if (type.size() == singleType.size()) { // 在所有记录中提取所有相同类型
for (int k = 0; k < type.size(); k++)
if (type.get(k).equals(singleType.get(k)) == false) {
ipEqualFlag = false;
break;
}
}
if (ipEqualFlag == true && typeEqualFlag == true) { // 若结果中同一条规则中事件的ip相同
satisfiedEqualIPEvent.add(record.get(i));
}
}
return satisfiedEqualIPEvent;
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* @author Administrator
*
*/
/**
* @author Administrator
*
*/
public class DataAnalyze {
public static void main(String[] args) {
// TODO Auto-generated method stub
String TimeSortedLogFile = "/home/wdl/test/result.txt";
List<String> record = new ArrayList<String>();
List<List<String>> typeGroupRecord = new ArrayList<List<String>>();
List<Double> gropCount = new ArrayList<Double>();
double count = 0;
double totalCount = 0;
// 扫描文件,将记录存储到List中
try {
File File = new File(TimeSortedLogFile);
BufferedReader wReader = new BufferedReader(new InputStreamReader(
new FileInputStream(TimeSortedLogFile), "UTF-8"));
String line = null;
while ((line = wReader.readLine()) != null) {
if ("".equals(line.trim())) { // 遇空行,略过继续执行
continue;
}
record.add(line);
}
wReader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
// 找出所有类型,如(a,f)
Map<List<String>, Integer> typePair = new HashMap<List<String>, Integer>();
List<String> satisfiedEqualIPEvent = new ArrayList<String>();
for (int i = 0; i < record.size(); i++) {
List<String> type = new ArrayList<String>(); // 记录不包含IP的日志类型
String[] logArr = record.get(i).split("\t");
for (int j = 0; j < logArr.length - 1; j++) {
String[] sublogArr = logArr[j - 1].split("_"); // sublogArr大小为2
type.add(sublogArr[1]);
}
typePair.put(type, 0);
}
// 遍历每一种类型
for (Entry<List<String>, Integer> entry : typePair.entrySet()) {
count = 0;
totalCount = 0;
satisfiedEqualIPEvent = resolvePair(entry.getKey(), record);
typeGroupRecord.add(satisfiedEqualIPEvent);
for (String tempStr : satisfiedEqualIPEvent) {
String[] str = tempStr.split("\t");
count = Double.parseDouble(str[str.length - 1]);
totalCount = totalCount + count;
}
gropCount.add(totalCount);
}
}
/**
* 对于每一对类型,找到同一台ip出现此故障的记录
*
* @param type
* @param record
* @return
*/
public static List<String> resolvePair(List<String> type,
List<String> record) {
Boolean ipEqualFlag = false;
Boolean typeEqualFlag = true;
List<String> satisfiedEqualIPEvent = new ArrayList<String>();
for (int i = 0; i < record.size(); i++) {
typeEqualFlag = true;
ipEqualFlag = false;
String[] logArr = record.get(i).split("\t");
List<String> singleType = new ArrayList<String>();
List<String> ip = new ArrayList<String>();
for (int j = 0; j < logArr.length - 1; j++) {
String[] sublogArr = logArr[j - 1].split("_"); // sublogArr大小为2
ip.add(sublogArr[0]);
singleType.add(sublogArr[1]);
}
Set s = new HashSet(ip); // 观察每一项的ip是否相同
if (s.size() > 1) {
ipEqualFlag = false;
} else {
ipEqualFlag = true;
}
if (type.size() == singleType.size()) { // 在所有记录中提取所有相同类型
for (int k = 0; k < type.size(); k++)
if (type.get(k).equals(singleType.get(k)) == false) {
ipEqualFlag = false;
break;
}
}
if (ipEqualFlag == true && typeEqualFlag == true) { // 若结果中同一条规则中事件的ip相同
satisfiedEqualIPEvent.add(record.get(i));
}
}
return satisfiedEqualIPEvent;
}
}
相关文章推荐
- Python数据分析模块 | pandas做数据分析(二):常用预处理操作
- pandas进行数据分析需要的一些操作
- pandas做数据分析(三):常用预处理操作
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
- 【运维】小白学数据分析之 日活跃人数分析
- 利用 Python 进行数据分析(八)pandas 基本操作(Series 和 DataFrame)
- 关于Oracle数据导入导出的一些操作
- java 字节流操作数据数据的几种情形分析
- 关于数据分析的一些注意点
- Spring源码分析:非懒加载的单例Bean初始化前后的一些操作
- 用python做数据分析4|pandas库介绍之DataFrame基本操作
- 漫谈redis在运维数据分析中的去重统计方式
- Python数据类型转换及一些操作
- R语言,一些数据操作
- EDM的一些常见处理数据操作
- 用python做数据分析4|pandas库介绍之DataFrame基本操作
- MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
- Elastic Stack (ELK 5)- 运维数据分析系统
- 基因芯片(Affymetrix)分析2:芯片数据预处理
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作