尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

2023 级课堂测试试卷—数据分析

2023 级课堂测试试卷—数据分析
📅 发布时间:2026/6/23 5:53:30

课程名称: 大型数据库应用技术 任课教师: 孙静 考试时间: 90 分钟

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、 数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中。
两阶段数据清洗:
(1)第一阶段:把需要的信息从原始日志中提取出来
ip: 199.30.25.88
time: 10/Nov/2016:00:01:03 +0800
traffic: 62
文章: article/11325
视频: video/3235
(2)第二阶段:根据提取出来的信息做精细化操作
ip--->城市 city(IP)
date--> time:2016-11-10 00:01:03
day: 10
traffic:62
type:article/video
id:11325
(3)hive数据库表结构:
create table data( ip string, time string , day string, traffic bigint,
type string, id string )
2、数据分析:在HIVE统计下列数据。
(1)统计最受欢迎的视频/文章的Top10访问次数 (video/article)
(2)按照地市统计最受欢迎的Top10课程 (ip)
(3)按照流量统计最受欢迎的Top10课程 (traffic)
3、数据可视化:
将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来。

数据集已经给好了只需要简单清洗一下就可以

这是先把原数据中有用的信息提取出来,并以,隔开


import csv
from datetime import datetime
from pathlib import PathRAW_FILE = Path("raw.csv")
OUT_FILE = Path("cleaned.csv")def parse_time(raw_time: str) -> str:# 原始格式: 10/Nov/2016:00:01:02 +0800main = raw_time.split()[0]dt = datetime.strptime(main, "%d/%b/%Y:%H:%M:%S")return dt.strftime("%Y-%m-%d %H:%M:%S")def clean(in_path: Path = RAW_FILE, out_path: Path = OUT_FILE) -> None:with in_path.open("r", encoding="utf-8", newline="") as fin, \out_path.open("w", encoding="utf-8", newline="") as fout:reader = csv.reader(fin)writer = csv.writer(fout)for row in reader:# 结构校验if len(row) != 6:continueip, raw_time, day, traffic, typ, _id = (c.strip() for c in row)# 类型/id 过滤if typ not in ("video", "article"):continueif not _id.isdigit():continue# 解析时间与流量try:time_fmt = parse_time(raw_time)traffic_val = int(traffic.replace(" ", ""))except Exception:continuewriter.writerow([ip, time_fmt, day, traffic_val, typ, _id])if __name__ == "__main__":clean()print(f"done: {OUT_FILE}")

需要下载
GeoLite2-City.mmdb才可以把坐标转换为城市的名字
下载地址
https://gitcode.com/open-source-toolkit/94ce3/tree/main

再清洗一遍,把地址转换为城市的名字


import csv
from pathlib import Path
import geoip2.databaseCLEANED_FILE = Path("cleaned.csv")
ENRICHED_FILE = Path("enriched.csv")
GEOIP_DB = Path("GeoLite2-City.mmdb")  # 请将库文件放在同目录或改为绝对路径def ip_to_city(reader):try:return reader.city.name or "UNKNOWN"except Exception:return "UNKNOWN"def enrich(cleaned=CLEANED_FILE, out=ENRICHED_FILE, geo_db=GEOIP_DB):if not geo_db.exists():raise FileNotFoundError(f"GeoIP DB not found: {geo_db}")reader = geoip2.database.Reader(str(geo_db))with cleaned.open("r", encoding="utf-8", newline="") as fin, \out.open("w", encoding="utf-8", newline="") as fout:r = csv.reader(fin)w = csv.writer(fout)for row in r:if len(row) != 6:continueip, ts, day, traffic, typ, _id = rowtry:city = reader.city(ip).city.name or "UNKNOWN"except Exception:city = "UNKNOWN"w.writerow([ip, ts, day, traffic, typ, _id, city])reader.close()print(f"done -> {out}")if __name__ == "__main__":enrich()

需要提前配置好hive,用datagrip将清洗的数据上传到hive中
image
根据需求生成sql语句,交给hive执行mapreduce语句,我这个虚拟机分配的内存比较少,主4GB,从1GB,从1GB
用了5-6分钟才计算出来,我还以为没连接好,可以把内存分配的多一些,这样就不需要等太长时间了,我没有装sqoop所以是手动导入mysql的,生成sql语句到mysql数据库,最后使用html可视化,因为数据量还是不大,所有可以这么做,数据大就必须用sqoop来传输运算结果了

295f98d5d37a249ed99892b6a7c48827
5b3c51fa1380bc1baf8909c79d76c2fe
3e93e3ab27140e176d46f55df2c78d76

image

相关新闻

  • 【Java毕设源码分享】基于springboot+vue的的学生作业管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 极地科考AI部署难题,如何用Open-AutoGLM实现零故障运行?
  • URI和URL的区别

最新新闻

  • 终极指南:98个公共Tracker服务器如何让你的BT下载速度翻倍?[特殊字符]
  • 别踩 2026年自定义词库转写的坑:我实操总结的新手实用经验
  • 【仅限首批注册开发者】:奇点大会Plugin Architecture工作坊未公开的12个生产级陷阱与对应eBPF监控脚本(有效期至2025.12.31)
  • 2026腾讯地图多场景技术方案科学选型指南
  • 选址避坑指南:企业如何从海量办公楼出租公司中精准锁定靠谱服务商
  • 6款主流幼儿英语启蒙app测评,孰优孰劣一目了然

日新闻

  • Arduino-ESP32项目深度解析:解锁隐藏芯片支持与架构演进
  • 2026年 系统窗厂家/品牌推荐榜单:隔音系统窗+高端系统门窗的核心优势与选购指南 - 品牌发掘
  • NVBench:首个双语非言语发声语音合成评测基准详解与实践

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号