隐藏页面特效

MongDB日志分析

Result文件数据说明:

Ip:106.39.41.166,(城市)

Date:10/Nov/2016:00:01:02 +0800,(日期)

Day:10,(天数)

Traffic: 54 ,(流量)

Type: video,(类型:视频video或文章article)

Id: 8701(视频或者文章的id)

测试要求:

1、 数据清洗:按照进行数据清洗,并将清洗后的数据导入MongDB数据库中。

两阶段数据清洗:

(1)第一阶段:把需要的信息从原始日志中提取出来

ip:    199.30.25.88

time:  10/Nov/2016:00:01:03 +0800

traffic:  62

文章: article/11325

视频: video/3235

结果实现:

package com.mongodb; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import org.bson.Document; import java.util.ArrayList; import java.util.List; /** * @author June * @date 2021/11/4 14:04 * 原始日志提取结果 */ public class SelectNo1 { public static void main(String[] args) { ServerAddress serverAddress = new ServerAddress("192.168.154.129",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("rootx", "admin", ".Xuan0613".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); //获取操作数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("chaoba"); //获取集合。后面的操作,大部分都是基于集合操作 MongoCollection<Document> contections=mongoDatabase.getCollection("result"); MongoCollection<Document> contection=mongoDatabase.getCollection("result1"); List<Document> documents=new ArrayList<>(); MongoCursor result1= contections.find().projection(new BasicDBObject("Ip",1).append("Date", 1).append("Traffic",1).append("Type",1)).iterator(); while(result1.hasNext()) { documents.add((Document)result1.next()); } contection.insertMany(documents); //删除 contections.deleteOne(Filters.eq("chaoba",1)); } }

 

(2)第二阶段:根据提取出来的信息做精细化操作

ip--->城市 city(IP)

date--> time:2016-11-10 00:01:03

day: 10

traffic:62

type:article/video

id:11325

实现代码:

package com.mongodb; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.result.UpdateResult; import org.bson.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; /** * @author June * @date 2021/11/4 14:26 */ public class Timeclean { public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException, TransformerException { ServerAddress serverAddress = new ServerAddress("192.168.154.129",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("rootx", "admin", ".Xuan0613".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); //获取操作数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("chaoba"); //获取集合。后面的操作,大部分都是基于集合操作 MongoCollection<Document> contections=mongoDatabase.getCollection("result"); MongoCollection<Document> contection=mongoDatabase.getCollection("result1"); public void updatetime() { List<test> list = mongoTemplate.findAll(test.class); for (int i = 0; i < list.size(); i++) { Update update = null; try { update = new Update().set("time", datatime.parseDate(list.get(i).getTime())); } catch (ParseException e) { e.printStackTrace(); } Query query = new Query(Criteria.where("_id").is(list.get(i).get_id())); mongoTemplate.updateFirst(query, update, test.class); } } //删除 contections.deleteOne(Filters.eq("chaoba",1)); } }

(3)MongDB数据库表结构:

create table data(  ip string,  time string , day string, traffic bigint,

type string, id   string )

 

 

2、数据处理:

·统计最受欢迎的视频/文章的Top10访问次数 (video/article)

·按照地市统计最受欢迎的Top10课程 (ip)

·按照流量统计最受欢迎的Top10课程 (traffic)

package com.mongodb; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import org.bson.Document; import java.util.ArrayList; import java.util.List; /** * @author June * @date 2021/11/4 15:23 */ public class TypeNo { public static void main(String[] args) { ServerAddress serverAddress = new ServerAddress("192.168.154.129",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("rootx", "admin", ".Xuan0613".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); //获取操作数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("chaoba"); //获取集合。后面的操作,大部分都是基于集合操作 MongoCollection<Document> contection=mongoDatabase.getCollection("result"); MongoCollection<Document> contections=mongoDatabase.getCollection("result2"); int i=0; List<Document> documents=new ArrayList<>(); BasicDBObject dbObject = new BasicDBObject(); dbObject.put("Traffic",-1); MongoCursor result1=contection.find().projection(new BasicDBObject("Ip",1).append("Traffic",1).append("Id",1)).sort(dbObject).iterator(); while(result1.hasNext()) { //System.out.println(result1.next()); documents.add((Document)result1.next()); i++; if(i>=10) break; } contections.insertMany(documents); //删除 contections.deleteOne(Filters.eq("chaoba",1)); } }

 

 

 

 


__EOF__

本文作者往心。
本文链接https://www.cnblogs.com/lx06/p/15688714.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   往心。  阅读(55)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
历史上的今天:
2020-12-14 jsp标签问题
点击右上角即可分享
微信分享提示