热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

大数据实习项目(分析双十一)

大数据分析系统一、系统设计概述1、设计目的熟悉Linux系统、MySQL、Hadoop、Hive、Sqoop、Spark等系统和软件的安装和应用;了解大数据处理的基本流程;熟悉数据

大数据分析系统

一、系统设计概述

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行业的技术海太宽广了,一个人是很难在每一个方面都精通的,我们必须坚定选择一个技术方向走下去,在该领域发光发热。在接下来的日子里,我应该不忘初心,继续深入学习,做更有深度的项目,为以后的就业打下基础。



推荐阅读
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 解决Linux中wget无法解析主机的问题
    本文介绍了如何通过修改/etc/resolv.conf文件来解决Linux系统中wget命令无法解析主机名的问题,通过添加Google的公共DNS服务器地址作为解决方案。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
author-avatar
Liushan2502897753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有