对web日志文件实现按照人员、行为分类
日志格式:
method,time,name
in,2015-05-06 17:37:46,Jenny1
out,2015-05-06 17:37:46,Judith1
in,2015-05-06 17:37:46,Lee1
in,2015-05-06 17:37:59,Crystal1
out,2015-05-06 17:37:59,Dale1
out,2015-05-06 17:37:59,Delia1
in,2015-05-06 17:38:00,Nelly1
out,2015-05-06 17:38:00,Olga1
out,2015-05-06 17:38:00,Penny1
in,2015-05-06 17:38:00,Florence1
out,2015-05-06 17:38:00,Giselle1
out,2015-05-06 17:38:00,Edwina1
out,2015-05-06 17:38:00,Elsa1
in,2015-05-06 17:38:00,Prima1
out,2015-05-06 17:38:00,Queena1
in,2015-05-06 17:38:00,Regina1
in,2015-05-06 17:38:00,Renee1
out,2015-05-06 17:38:00,Honey1
out,2015-05-06 17:38:00,Ingrid1
out,2015-05-06 17:38:00,Esther1
in,2015-05-06 17:38:00,Ethel1
out,2015-05-06 17:38:20,Flora1
in,2015-05-06 17:38:21,Freda1
out,2015-05-06 17:38:00,Gloria1
in,2015-05-06 17:38:00,Sabrina1
in,2015-05-06 17:38:00,Thera1
out,2015-05-06 17:38:00,Tiffany1
out,2015-05-06 17:38:00,Jodie1
in,2015-05-06 17:38:00,Judy1
要求:
计算每分钟内用户的在线人数与离线人数
思路:
1、2015-05-06 17:37:59,这样的时间可以定义为2015-05-06 17:37:00至2015-05-06 17:37:59,只要是这个区间的都将视为是17:37:00的行为
2、将时间、人员、行为 作为key,这个短时间的人员作为value,存储在Map中
处理时间类:
public static String TimeFrom(String str) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result=null;
try {
long now=df.parse(str).getTime();
long from=(now/60000)*60000;
Calendar c = Calendar.getInstance();
c.setTimeInMillis(from);
result=df.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
读取文件,并存储key value
File file = new File("e://aa.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(
file), "utf-8");
BufferedReader bufferread = new BufferedReader(read);
String linetxt = null;
HashMap<String, ArrayList> hashname = null;
hashname = new HashMap<String, ArrayList>();
ArrayList a=null;
while ((linetxt = bufferread.readLine()) != null) {
String[] array = linetxt.split(",");
String value = TimeUtils.TimeFrom(array[1])+":"+array[2]+":"+array[0];
if (!hashname.containsKey(value)) {
a=new ArrayList();
a.add(array[2]);
hashname.put(value, a);
} else {
a.add(array[2]);
hashname.put(value, a);
}
}
Set set =hashname.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey()+"-->"+((ArrayList) me.getValue()).size());
}
} catch (Exception e) {
e.printStackTrace();
}
对web日志文件实现按照人员、行为分类的更多相关文章
- 海量WEB日志分析
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...
- 可视化实时Web日志分析工具-goaccess
说到web服务器就不得不说Nginx,目前已成为企业建站的首选.但由于种种历史原因,Nginx日志分析工具相较于传统的apache.lighthttp等还是少很多. 今天就和大家分享一个非常强大的实时 ...
- hadoop入门之海量Web日志分析 用Hadoop提取KPI统计指标
转载自:http://blog.fens.me/hadoop-mapreduce-log-kpi/ 今天学习了这一篇博客,写得十分好,照着这篇博客敲了一遍. 发现几个问题, 一是这篇博客中采用的had ...
- logstash+redis收集负载均衡模式下多台服务器的多个web日志
一.logstash的简介 一般我们看日志来解决问题的时候要么 tail+grep 要么 把日志下载下来再搜索,可以应付不多的主机和应用不多的部署场景.但对于多机多应用部署就不合适了.这里的多机多应用 ...
- 服务器日志文件Web远程查看
公司买的一款企业应用软件,所有透过应用操作DB的操作都会生成有日志,日志是以文本文件的形式存放在服务器上,后缀名为*.log.1,*.log.2之类的,软件本身也提供功能查询这些日志,但这个查询的功能 ...
- Django实现web端tailf日志文件
这是Django Channels系列文章的第二篇,以web端实现tailf的案例讲解Channels的具体使用以及跟Celery的结合 通过上一篇<Django使用Channels实现WebS ...
- log4j添加日志一定记住在工程的web.xml文件下加一些内容
log4j添加日志一定记住在工程的web.xml文件下加如下内容:
- Log4j写日志文件使用详解
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发 ...
- IIS 503日志文件在哪
概述 503:“服务不可用”错误是一个非自定义的错误,该错误表示服务器当前无法处理该请求. 可能原因:1.管理员可能关闭应用程序池以执行维护.2.当请求到达时应用程序池队列已满.3.应用程序池标识没 ...
随机推荐
- opencv 人脸识别 (一)训练样本的处理
本文实现基于eigenface的人脸检测与识别.给定一个图像数据库,进行以下步骤: 进行人脸检测,将检测出的人脸存入数据库2 对数据库2进行人脸建模 在测试集上进行recognition 本篇实现 ...
- nova读取配置文件流程
在我们安装nova的过程中,设置它的配置文件/etc/nova/nova.conf是必不可少的一步.配置好nova.conf文件,nova-compute.nova-network等服务才 ...
- git环境搭建
Linux kernel 的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...
- 《c程序设计语言》读书笔记--大于8 的字符串输出
#include <stdio.h> #define MAXLINE 100 #define MAX 8 int getline(char line[],int maxline); voi ...
- [HDOJ5510]Bazinga(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 普通集合会tle,换高贵的并查集. #include <algorithm> #in ...
- 《OD大数据实战》HDFS入门实例
一.环境搭建 1. 下载安装配置 <OD大数据实战>Hadoop伪分布式环境搭建 2. Hadoop配置信息 1)${HADOOP_HOME}/libexec:存储hadoop的默认环境 ...
- 10.10 dos实验
一. 实验目的 (1)认识DOS: (2)掌握命令解释程序的原理: (3)掌握简单的DOS调用方法: (4)掌握C语言编程初步. 二. 实验内容和要求 编写类似于DOS,UNIX的命令行解释程序 (1 ...
- c语言宏定义
一. #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时 ...
- 嵌入式linux内核是什么?
linux内核是一种可以被内核动态加载(insmode)和卸载(rmmod)的可执行二进制代码 最简单的内核 #include <linux/module.h> #include < ...
- js兼容多浏览器的关闭当前页面
关闭当前页面,相信不少人在开发中都遇到过这个需求,但面对这么多的浏览器,要做到js的兼容还需要做特殊的处理.关于这方面网上有很多的资料,但大多都是复制粘贴的,没有达到兼容的效果,或者是效果不好. 下面 ...