Hadoop综合项目——二手房统计分析(起始篇)
文章目录
0、 写在前面
- Windows版本:
Windows10
- Linux版本:
Ubuntu Kylin 16.04
- JDK版本:
Java8
- Hadoop版本:
Hadoop-2.7.1
- Hive版本:
Hive1.2.2
- IDE:
IDEA 2020.2.3
- IDE:
Pycharm 2021.1.3
- IDE:
Eclipse3.8
1、项目背景与功能
1.1 项目背景
随着经济的发展,北、上、广、深这四大一线城市迅速发展,在经济、政治等方面有突出的表现,而且就业岗位多,生活质量较高,是大多数人所向往的地方。但是定居一线城市并不容易,而购买二手房是一个可以选择的方案,故本项目利用相关二手房信息进行统计分析,进而了解房源基本情况。
1.2 项目功能
统计分析国内四大一线
城市二手房的情况,包括房子楼龄、价格、数量、地理位置、优势、面积大小、规格大小等维度,更好地展示二手房的市场趋势,帮助部分人解决购房问题。
2、数据集和数据预处理
2.1 数据集
- 数据来源:
利用后裔采集器爬取工具,对贝壳找房网站爬取北京、上海、广州、深圳四个一线城市的二手房数据信息。
- 数据量:11648
- 数据字段说明:
- 原始数据展示:
2.2 数据预处理
2.2.1 字段空值处理
- 处理目的:
- 具体处理过程:
处理前:各个城市的空值数据条数如下图所示:
- 处理结果:
2.2.2 无用数据的处理
- 处理目的:
- 具体处理过程:
直接手动删除掉无用数据
- 处理结果:
2.2.3 数据重复处理
- 处理目的:
- 具体处理过程:
使用以下的SQL语句查询重复数据的一组id,最终有38组重复的数据,即有19条数据重复。
with th1 as(
select * from tb_house
), th2 as (
select * from tb_house
)
select th1.id id1, th2.id id2 from th1, th2
where th1.title = th2.title and th1.city = th2.city and th1.houseInfo = th2.houseInfo
and th1.followInfo = th2.followInfo and th1.positionInfo = th2.positionInfo
and th1.total = th2.total and th1.unitPrice = th2.unitPrice and th1.tag = th2.tag
and th1.crawler_time = th2.crawler_time and th1.id != th2.id
delete from tb_house where id = 10108 or id = 8780 or id = 9900 or id = 10858 or id = 10318 or id = 9899 or id = 8798 or id = 6139 or id = 10528 or id = 9988 or id = 11638 or id = 9898 or id = 8794 or id = 9838 or id = 9808 or id = 11458 or id = 9839 or id = 10529 or id = 11128;
- 处理结果:
2.2.4 添加id字段
- 处理目的:
- 具体处理过程:
alter table tb_house add id int(6);
- 处理结果:
处理后,id字段已经添加成功,如下图所示:
2.2.5 houseInf字段中的空字符处理
- 处理目的:
- 具体处理过程:
处理前,houseInfo字段中的空字符数据展示,如下图所示:
通过查询可以得知,一共有1958条数据的houseInfo字段中不存在“建造年份”信息,如下图所示:
- 处理结果:
2.2.6 followInfo字段中的空字符处理
- 处理目的:
- 具体处理过程:
处理前,houseInf字段中的空字符数据展示,如下图所示:
- 处理结果:如下图所示
2.2.7 title字段中的Tab字符处理
- 处理目的:
- 具体处理过程:
处理前,title字段中的tab字符数据展示,此种情况如下图所示:
- 处理结果:如下图所示
2.2.8 houseInfo字段中的换行符处理
- 处理目的:
- 具体处理过程:
处理前,houseInfo字段中存在“\n”字符数据展示,此种情况如下图所示:
select id, houseinfo from tb_house where houseinfo like '%\n%'
- 处理结果:如下图所示
update tb_house set houseinfo = replace(houseInfo, CHAR(10), '')
select id from tb_house where houseinfo like '%\n%'
2.2.9 最终数据
3、数据上传
3.1 预处理后的数据上传至HDFS
zhangsan@node01:~ $ hadoop fs -mkdir /Ke_House
zhangsan@node01:~ $ hadoop fs -put ./tb_house.txt /Ke_House
zhangsan@node01:~ $ hadoop fs -ls /Ke_House
Found 1 items
-rw-r--r-- 1 zhangsan supergroup 3385429 2022-11-06 23:48 /Ke_House/tb_house.txt
3.2 数据集展示
4、数据及源代码
-
Github
-
Gitee
5、总结
对于本项目,数据字段的处理是最繁琐的,字段处理完毕是统计分析的前提,数据如若杂乱、没有规整性,统计分析将毫无意义。通过MapReduce对最值、排序、TopN、自定义分区排序、二次排序、自定义类、占比等8个方面的统计分析,总体上难度不高;本项目的Hive统计分析案例一共有7个,HQL的正确编写是Hive统计分析的关键,尽管本项目的Hive底层查询引擎使用的MR,但是在正确的基础上编写出高效的查询语句是每一个大数据从业者应该追求的。在数据可视化方面,一共是有8张可视化展示图,通过MR和Hive的统计分析结果以及从MySQL的查询结果,一一展示。本项目是对于Hadoop生态课程学习的成果体现,总体上难度不高,收获较多。