hadoop综合项目——二手房统计分析(起始篇)(代码片段)

7& 7&     2022-12-26     648

关键词:

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 数据预处理

数据预处理阶段,本项目是先将爬取的数据直接导入到MySQL
(Windows10环境下),接着通过JDBC的方式连接MySQL数据库,对原始数据进行处理。

2.2.1 字段空值处理

  • 处理目的:

爬取的数据存在字段为空的情况,且均属于整条数据(除城市,标签和爬取时间字段外)的字段都为空的情况,导致数据并不适合分析,也没有分析的意义。因此,直接将此种情况的数据剔除掉

  • 具体处理过程:

处理前:各个城市的空值数据条数如下图所示:

  • 处理结果:

处理后,空值数据为0条,如下图所示:

2.2.2 无用数据的处理

  • 处理目的:

删除没有分析价值的数据,比如下图所示:只有houseInfo、followInfo和total均为空;再比如整条数据都为空的情况。

  • 具体处理过程:

直接手动删除掉无用数据

  • 处理结果:

证明无用数据已经删除的方法可以通过下文中的【2.2.3 houseInf字段中的空字符处理】来判断。若截取到的houseInfo中子信息为空,处理houseInf字段中的空字符的程序代码会出现错误,在该程序代码中已经打印出数据处理到哪一个位置,直接根据报错的数据位置,查找对应的无用数据,同时这种数据是个别的,因此在MySQL(Windows10环境下)中将其手动删除即可。

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

对于重复数据,直接使用SQL语句删除即可。

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;
  • 处理结果:

数据不再有重复的情况,可以通过上述查找重复数据的SQL语句再次确认。

2.2.4 添加id字段

  • 处理目的:

作为数据的编号,便于测试分析等。

  • 具体处理过程:

直接在MySQL(Windows10环境下)中执行下面的SQL语句,并将id字段设置为主键且设置为自增模式。

alter table tb_house add id int(6);
  • 处理结果:

处理后,id字段已经添加成功,如下图所示:

2.2.5 houseInf字段中的空字符处理

  • 处理目的:

爬取的数据中houseInfo字段存在空字符的情况,且每条数据均有此种情况,会导致在MapRedude和Hive数据分析时,造成该字段中信息较难处理以及获取对应子字段信息的后果。因此,此处先通过JDBC的方式处理掉该字段中的空字符。

  • 具体处理过程:

处理前,houseInfo字段中的空字符数据展示,如下图所示:

同时,对于该字段中不存在“建造年份”的信息

通过查询可以得知,一共有1958条数据的houseInfo字段中不存在“建造年份”信息,如下图所示:

对于这种情况,需要为这些数据填充未知的建造年份,此处均采用填充「未透露年份建」的信息,当然也可以使用其他描述信息来填充建造年份,此处考虑到建造年份(如:1992年建)均为6个字符且以「建」字结尾,所以采用了「未透露年份建」来与之相对应填充。
处理完这个情况以及上述的空字符情况之后,需要将该字段以|作为分隔符来分隔houseInfo字段中的各个子信息。即该字段最终的值为「低楼层|共8层|2001年建|3室2厅|104.68平米|东南」。

  • 处理结果:

处理后,houseInf字段有关的建造年份信息已经填充完毕且该字段均没有空字符的存在,如下图所示:

2.2.6 followInfo字段中的空字符处理

  • 处理目的:

爬取的数据中的followInfo字段存在空字符的情况,且每条数据均有此种情况,会导致在MapRedude和Hive数据分析时,造成该字段中信息较难处理以及获取对应子字段信息的后果。因此,此处先通过JDBC的方式处理掉该字段中的空字符。该字段含有的空字符数据如下图所示:

  • 具体处理过程:

处理前,houseInf字段中的空字符数据展示,如下图所示:

同样是通过JDBC的方式,先获取到该字段中的子信息(关注数和发布时间),再通过拼接更新该字段。

  • 处理结果:如下图所示

2.2.7 title字段中的Tab字符处理

  • 处理目的:

对于本项目的MapReduce统计分析阶段,预处理之后的数据是以tab作为每一行数据的分隔符,如若数据的某些字段存在tab字符,那就会影响到MapReduce统计分析中数据字段获取的正确性,从而导致MapReduce的Mapper端数据读取被终止,因此需要提前处理掉这些字段中含有的tab字符。对于本项目数据预处理到当前阶段而言,只有title字段存在这种特殊情况。

  • 具体处理过程:

处理前,title字段中的tab字符数据展示,此种情况如下图所示:

对于此字段的处理,由于这种特殊情况只涉及到id为10931的这一条数据,且title字段的各个子信息(大于1个子信息)之间均以逗号(英文)进行分隔,故可以选择直接在MySQL(Windows10环境下)使用SQL语句直接将tab字符替换成“,”字符,但是此种方式的SQL语句些许麻烦,所以本项目还是采用JDBC的方式进行处理。

  • 处理结果:如下图所示


2.2.8 houseInfo字段中的换行符处理

  • 处理目的:

由于个别houseInfo字段中存在\\n字符,会导致在获取二手房面积大小这一信息时,出现错误的现象,因此需要提前这些回车字符。

  • 具体处理过程:

处理前,houseInfo字段中存在“\\n”字符数据展示,此种情况如下图所示:

select id, houseinfo from tb_house where houseinfo like '%\\n%'

对于此字段的处理,由于这种特殊情况只涉及到两条数据,故可以选择直接在MySQL(Windows10环境下)使用SQL语句直接删除掉。

  • 处理结果:如下图所示

说明:在MySQL中,CHAR(10)表示换行符,CHAR(13)表示回车符,很明显,此次预处理就是删除掉换行符。

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、数据及源代码

5、总结

对于本项目,数据字段的处理是最繁琐的,字段处理完毕是统计分析的前提,数据如若杂乱、没有规整性,统计分析将毫无意义。通过MapReduce对最值、排序、TopN、自定义分区排序、二次排序、自定义类、占比等8个方面的统计分析,总体上难度不高;本项目的Hive统计分析案例一共有7个,HQL的正确编写是Hive统计分析的关键,尽管本项目的Hive底层查询引擎使用的MR,但是在正确的基础上编写出高效的查询语句是每一个大数据从业者应该追求的。在数据可视化方面,一共是有8张可视化展示图,通过MR和Hive的统计分析结果以及从MySQL的查询结果,一一展示。本项目是对于Hadoop生态课程学习的成果体现,总体上难度不高,收获较多。

结束!

基于hadoop的项目实战-职位数据综合分析从数据采集(selenium)数据预处理hive分析sqoop导入mysql进一步用javaweb可视化,最后进行机器学习数据挖掘分析(代码片段)

 一、数据采集(selenium)fromseleniumimportwebdriverimporttimeimportreimportpandasaspdimportos 在爬取的过程中可能会有登陆弹窗,要先定义一个处理弹窗的函数defclose_windows():#如果有登录弹窗,就关闭try:time.sleep(0.5)ifdr.f 查看详情

hadoop综合案例之陌陌聊天数据分析

...线,会出现大量的聊天数据,通过对聊天数据的统计分析,可以更好的对用户构建精准的用户画像,为用户提供更好的服务以及实现高ROI的平台运营推广,给公司的发展决策提供精确的数据支撑。目标基于Hadoo... 查看详情

使用maven构建hadoop工程并实现词频统计案例(详细篇)

使用Maven构建Hadoop工程并实现词频统计案例(详细篇)一、实验环境:Hadoop3.1.3IDEACentOS7.5Maven3.6.3伪分布式二、使用Maven构建Hadoop工程1.解压Maven到自己的安装目录tar-zxvf./apache-maven-3.6.3-bin.tar.gz-C/opt/module/2.配置Maven环境变量vim/etc/profile.... 查看详情

入门python数据分析最好的实战项目(代码片段)

北京二手房房价分析与预测目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。数据:通过爬虫采集的链家全网北京二手房数据\\数据初探首先导入要使用的科学... 查看详情

hadoop(十四)mapreduce原理分析

...一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架。  Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。... 查看详情

hadoop综合案例-聊天软件数据(代码片段)

...;给公司的发展决策提供精确的数据支撑。目标:基于Hadoop和Hive实现聊天数据统计分析,构建聊天数据分析报表需求:统计今日总消息量统计今日每小时消息量、发送和接收用户数统计今日各地区发送消息数据量统计... 查看详情

数据挖掘导论——综合实验

...征相关性分析:3、特征值重复度分析:4、缺失值统计分析:5、价格分布分析:二、数据预处理1、缺失值处理:2、数值化非数值特征3、异常值处理三、特征工程1、组合匿名特征:2、提取日期信息3、特征... 查看详情

python开发爬虫之beautifulsoup解析网页篇:爬取安居客网站上北京二手房数据

目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称、价格、几室几厅、大小、建造年份、联系人、地址、标签等。网址为:https://beijing.anjuke.com/sale/BeautifulSoup官网:https://www.crummy.com/software/BeautifulSoup/直接上... 查看详情

java程序设计综合项目实训一——词频统计

...22cbq-1实训项目过程照片:解题思路:首先,词频统计是一个综合性较强、知识涉及较广的实训项目,我们首先将它模块化,一块一块的进行编写;我们将它分为三个模块,模块一是WordOfArticle.java模块,该部分是对.txt文件中 查看详情

细节拉满hadoop课程设计项目,使用idea编写基于mapreduce的学生成绩分析系统(附带源码项目文件下载地址)(代码片段)

目录1数据源(学生成绩.csv)2hadoop平台上传数据源3idea代码3.1工程框架3.2导入依赖3.3系统主入口(menu)3.4六个mapreduce3.4.1 计算每门成绩的最高分、最低分、平均分(Mma)3.4.2 计算每个学生的总分及平均成绩并进行排序(Sas)3.4.3 统计所有... 查看详情

大数据—hadoop(入门篇一)(代码片段)

Hadoop(一)Hadoop是什么Hadoop组成HDFS架构概述YARN架构概述MapReduce架构概述Hadoop是什么Hadoop是一个由Apache基金会所开发的分布式系统基础架构主要解决,海量数据的存储和海量数据的分析计算问题广义上来说,Hadoop... 查看详情

链家网各城市二手房价格

获取链家网所有城市得到城市里所有的区域爬取各区域里二手房的信息分析热门城市二手房的价格(仅供参考)项目地址:https://github.com/JiYu-NH/ErShouFang 查看详情

r语言-上海二手房数据分析(代码片段)

案例:通过分析上海的二手房的数据,分析出性价比(地段,价格,未来的升值空间)来判断哪个区位的二手房性价比最高1.载入包library(ggplot2)library(Hmisc)library(car)library(caret)2.加载数据集houses<-read.csv(‘E:\\Udacity\\DataAnalysisHigh\\R\\R_Study\\... 查看详情

基于java的校园二手交易系统的设计与实现.rar(论文+项目源码)

第一章绪论11.1研究背景11.2系统的现状11.3系统实现的功能11.4校园二手交易平台的特点21.5本文的组织结构2第二章开发技术与环境配置32.1Java语言简介32.2MySQL环境配置32.3MyEclipse环境配置42.4mysql数据库介绍42.5B/S架构4第三章系统分析... 查看详情

基于python的二手房数据分析,思路+代码范例(代码片段)

本篇博客将基于Python,梳理二手房数据分析的整体过程。文章目录思路整理数据分析步骤的示例代码基于Python的二手房分析|另一种代码思路整理数据收集:从网站或其他数据源收集二手房数据,并将其存储在CSV或其... 查看详情

[分析与设计]二手房房屋图片功能需求分析与设计

业务需求 中介从业用户发布二手房房源信息,要求能够上传房源图片,房源图片控制在8张。发布过程中,为了避免用户使用失误,要求房源图片上传后且在房源其他信息尚未提交前,就算不小心刷新页面,上传的图片信息... 查看详情

概率和期望类题目综合分析

先给出学习资料吧:kuangbin的博客:  https://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html              kuangbin的博客里面有3篇论文, 查看详情

分布式数据访问服务之2—数据实时分析篇

...sh;华山论剑篇在数据库分库分表实现横向伸缩后,数据的综合查询、分析,业界都有哪些解决方案?这是一个值得研究和讨论的主题。所以,本篇文章中继续研究分库分表后的数据库综合查询和实时分析技术。去年我们参加了阿... 查看详情