大数据实习项目(分析双十一)
大数据分析系统
一、系统设计概述
1、设计目的
熟悉Linux系统、MySQL、Hadoop、Hive、Sqoop、Spark等系统和软件的安装和应用;
了解大数据处理的基本流程;
熟悉数据预处理方法;
熟悉在不同类型数据库之间进行数据相互导入导出;
熟悉使用JSP语言搭建动态Web工程;
熟悉使用Spark MLlib进行简单的分类操作。
2、设计思想
该系统利用Linux系统上的各种大数据存储和分析工具进行大量的数据处理,然后将经过处理后的数据导出到我们常用的MySQL数据库中,从而对其进行分类分析并将数据可视化,达到大量数据由抽象到形象化的效果,展示给用户看。
二、系统需求分析
1、功能需求
在大数据时代,随着互联网的快速发展和使用人数的急剧增长,如何利用并处理这些用户产生的大量数据成为了热门的话题,由此诞生了很多大数据技术。而淘宝每年的双11都将产生大量的交易数据,对用户的交易数据进行分析可以对用户的购买意向、年龄分段、性别行为等有一个清晰的定位,从而提高商品与用户的相关度,进行大数据推荐等措施。
2、可行性分析
当前的大数据技术已经很成熟了,虽然在数据量非常大的情况下,单机在性能上不足以处理大量数据,但是在现在的Hadoop分布式文件系统(HDFS)中,数据量已经不再限制单机性能。在获取到数据集的条件下,将数据集导入虚拟机中交由Hadoop和其组合工具处理,处理后再导出到MySQL就可对其进行可视化处理了,所以在实现上是没问题的。
三、系统设计的基本原理和采用的主要方法与技术
1、基本原理:
此系统基于HDFS存储原理、hive分析技术原理、sqoop数据互导原理、spark向量机运算原理和Javaweb原理实现。
2、主要方法和技术:
采用的主要方法是对已经收集到的数据集上传到Linux里面交给Hadoop储存,然后导入到数据hive中进行分析,分析完成后在交给Sqoop将数据导出到MySQL中,这样就能直接用Java代码操作数据了,对其进行可视化就变得及其简单。
主要技术:
对文本文件形式的原始数据集进行预处理。
把文本文件的数据集导入到数据仓库Hive中。
对数据仓库Hive中的数据进行查询分析。
使用Sqoop将数据从Hive导入MySQL。
利用IDEA搭建动态Web应用。
利用ECharts进行前端可视化分析。
利用Spark MLlib进行回头客行为预测。
3、系统流程图:
四、本人在此次实习负责的系统模块设计与实现。
模块内容:利用ECharts进行数据可视化分析:1. 搭建tomcat+mysql+JSP开发环境2. 利用IDEA新建可视化Web应用3. 前后端代码编写, 并添加ECharts可视化分析。
模块设计:本人在该系统设计中负责对数据进行可视化处理,要实现小组其他成员处理后导出到MySQL数据库的数据的可视化分析,得利用Javaweb的技术将数据展示到网页上,开发环境为IDEA、tomcat、JSP、Java,后端利用Java操作MySQL对数据库中的用户表进行查询分析,并将数据返回给JSP页面调用,前端利用Echart框架对数据进行可视化处理,主要用到的数据模型为饼图、柱状图和中国地图,其中饼图用来显示所有用户消费行为和男女用户消费行为;柱状图用来显示各年龄段用户的交易量对比和销量top7商品的交易量;中国地图用来展示每个省份的交易量。
模块实现:
1、通过分析数据库中user_log表发现 ,具有用户id字段,商品id字段,性别字段,行为字段,年龄范围字段,用户所属省份字段等,由此可以初步分析出结论应该会有:用户购买行为数据统计、用户中男女性别交易量对比、所有用户中各个年龄段的购买力、各个省份交易量对比等数据。
2、编写后端代码的时候,用Java和jdbc操作MySQL,定义每个结论所需要的返回方法,在这里我们全部方法都使用静态方法,这样在tomcat服务启动的时候,jvm虚拟机会将每一个静态方法载入内存中交给前端直接通过类名调用,而无需创建类的对象。这里依次编写五个静态方法,其中四个以ArrayList的数据结构返回给前端,一个以JSONObject的格式返回数据。
3、前端数据展示:主要用到jsp和Echart.js展示数据,其中五个图表由echart的图表绘制,在省份数据展示上我们引入了中国地图,需要引入china.js文件,在jsp 页面上接收5个方法返回的数据对象,然后在对应的Echart图表的option中引用获取的对应数据。
五、个人遇到的困难与获得的主要成果
1、遇到的困难:
1、hive初始化出错,原因是hive的guava.jar包的版本与Hadoop里面的不一致
2、一开始使用MySQL8.0去适配hive的时候没注意时区的区别,导致hive初始化失败。
3、Hadoop、MySQL和hive历史版本没卸载干净导致的残留问题出现莫名奇妙的错误。
4、sqoop搭配MySQL8.0的时候jdbc驱动配置无法更新为8.0的配置,内置的时区配置无法修改,产生兼容性问题。
5、JSP页面中在JS模块中无法使用list集合,导致Java后台传来的集合无法直接赋值给相应地图数据的data。使用数组结构又不符合地图data的数据结构类型,使得地图数据无法正确获取,通过一步步debug,改变后台传值方式,转化为json格式后传回前端,最后利用json的接受方式获取了正确的集合数据给地图用。
2、获得的主要成果:
1、学会了利用框架和组件的文档在理解的基础上嵌入到项目当中,并逐渐熟练运用不同的组件对整个项目进行美化完善,融会贯通,不写重复代码,提高了技术文档阅读能力。
2、加深了使用IDEA去Debug的熟练度和技巧,掌握了前后台发生数据交互的时候合理的设置断点,观察数据的传递,可看出哪里出错,进一步提高了调试能力,熟练运用了一些网页页面检查信息的功能。
3、学会了排查错误,善于利用百度等搜索引擎去搜索解决方案,养成了自己纠错的习惯,提高了开发技术,可以举一反三,融会贯通。
4、提高了操作Linux的熟练度,熟悉了操作Hadoop的常用技能,了解了数据仓库hive和MySQL之间的联系并熟悉了hive常用操作。
5、熟悉了Echart组件的配置和使用,根据官方文档也能轻松绘制前端图标。领略了其强大之处。
六、测试与运行记录
1、在debug模式下的数据模型如下:
(1)数据库双11 所有买家消费行为比例:
(2)男女买家交易对比
(3)男女买家各个年龄段交易对比
(4)获取销量前7的商品类别
(5)各个省份的的总成交量对比
2、前台获取的数据:
3、最终结果:
七、系统设计完成结果分析与个人小结
本系统经调试运行,基本可以正常运作,数据精确不出错,但是系统设计结构上可能没有那么严谨,例如Jsp页面没和js分离,数据展示功能也不够全面,后续会增添新功能;整体上来说,该系统从构思到实现都还算蛮顺利的,特别难的地方不多,遇到棘手的问题也能通过埋头研究与投入大量时间去解决掉。从熟悉hadoop开始入门,也逐渐学到了很多大数据技术,很多大数据工具使用起来很方便,也很容易上手。通过这次实习,我体会到了模块化开发的优点,提高了对整体项目的管理能力,在开发中可以学到更多技术。在接触大数据技术后,我深深地感觉到IT行业的技术海太宽广了,一个人是很难在每一个方面都精通的,我们必须坚定选择一个技术方向走下去,在该领域发光发热。在接下来的日子里,我应该不忘初心,继续深入学习,做更有深度的项目,为以后的就业打下基础。
本文来自博客园,作者:小李不背锅,转载请注明原文链接:https://www.cnblogs.com/lishilin-glut/p/16462118.html