目录
一,绪论
1、项目背景:
2、目标:
3、用户群体:
二.相关开发技术介绍
(一)后端相关技术
1.sparkSQL简介
2.kettle简介
3.tensorflow简介
(二)前端相关技术
1.HTML简介
2.echarts简介
(三)相关数据库
1.Mysql简介
2.hive简介
三.需求分析
三.系统设计
项目框架:
系统目的:
数据库设计:
四.系统实现
1.预处理:
数据仓库:分层
导入导出:
预测部分代码和结果:
运行结果:
可视化展示
五.得到结论
通过合理的预测预测各个年份出版图书的占比可以提供一些有用的信息和洞察,例如:市场趋势分析:通过观察图书占比的变化,可以分析出版业的发展趋势和变化趋势,了解不同年份图书市场的热点领域和消费趋势。 分析图书产业的发展方向:通过预测各个年份出版图书的占比,可以推测趋势和市场需求。这有助于出版商、作家和从业者了解当前和未来的市场机会,有针对性地开发新的图书作品或调整出版策略。 行业投资决策:对图书产业的投资者来说,预测各个年份出版图书的占比可以提供参考,帮助他们了解市场的收益和回报率。投资者可以根据不同年份图书占比的变化来决定是否进行投资,以及如何分配资源。 教育和学术研究:对教育、学术界及相关研究人员来说,预测各个年份出版图书的占比可以提供数据支持和依据,帮助他们了解图书市场的发展趋势,评估学术出版品的影响力和研究领域的发展方向。总之,预测各个年份出版图书的占比有助于了解市场走势、制定战略决策和提供数据支持,对出版业、投资者以及教育和学术界都具有一定的意义。
通过观察每年图书占比的变化推测趋势和市场需求,分析图书产业的发展方向
主要用户群体为图书馆管理员、商家,他们需要对书籍的流行趋势有一个了解,什么时候客户需求增加,什么时候减少,对应时间取进相应的书籍。
本章主要介绍开发本系统所涉及到的相关技术。
Spark SQL是Apache Spark中处理结构化数据的模块。
编程抽象:Spark SQL提供了一个称为DataFrame的编程抽象,它允许开发者使用SQL或熟悉的DataFrame API查询Spark程序内的结构化数据。这种抽象简化了数据处理和分析的过程
统一的数据访问方式:Spark SQL能够以同样的方式连接到任何数据源,包括Hive、Avro、Parquet、ORC、JSON和JDBC等。这使得数据访问变得统一和简化,无需针对不同数据源编写特定的代码
Spark SQL是一个功能强大的结构化数据处理模块,它提供了统一的编程接口和数据访问方式,使开发者能够轻松处理和分析大规模的结构化数据。
Kettle,也被称为Pentaho Data Integration (PDI),是一款开源的数据集成工具。它主要用于数据的抽取、转换和加载(ETL)工作,帮助用户高效稳定地从各种数据源中提取、清洗、整合数据,并加载到目标系统中,是一款功能强大、高效稳定、跨平台的数据集成工具,广泛应用于企业级数据抽取、转换和加载工作。
TensorFlow是一个开源的机器学习框架,由谷歌人工智能团队开发。它被广泛应用于各种机器学习和深度学习任务,是当前最受欢迎的机器学习框架之一。
TensorFlow基于数据流编程,其核心是一个计算图模型。它使用一种称为“Tensor”的多维数组来表示和操作数据,并支持自动微分等高级功能。TensorFlow的强大之处在于其灵活性和可扩展性,可以轻松地构建复杂的神经网络模型,并在各种硬件上高效地运行。
TensorFlow拥有丰富的API和工具,包括TensorFlow Core(用于构建和训练模型)、TensorFlow Probability(提供概率编程和机器学习库)、TensorFlow Hub(用于共享预训练模型)等。这些API和工具使得开发者可以更加方便地使用TensorFlow进行各种机器学习应用开发。
总之,TensorFlow是一个强大、灵活、可扩展的开源机器学习框架,被广泛应用于各种机器学习和深度学习任务。它提供了丰富的API和工具,使得开发者可以更加方便地使用TensorFlow进行应用开发。
HTML,全称为HyperText Markup Language(超文本标记语言),是用于创建网页的标准标记语言。它被用来描述和定义网页上的内容和结构,包括文本、图片、链接、音频、视频等。
HTML使用一系列的标签(或称为元素)来定义网页上的各个部分。这些标签是HTML元素的语法结构,用于描述网页内容的性质和它们之间的关系。例如,
标签表示一个段落,标签则用于插入图片。
HTML文档的基本结构包括DOCTYPE声明、HTML元素、head元素和body元素。DOCTYPE声明用于告诉浏览器文档所使用的HTML版本;HTML元素是所有其他元素的根元素;head元素包含了文档的元信息,如字符集声明、样式表链接和脚本链接等;body元素则包含了网页的主要内容,如文本、图片、链接等。
HTML5是HTML的最新版本,它引入了许多新的元素和API,使得网页开发更加灵活和强大。例如,Canvas API可以用于在网页上绘制图形和动画,Geolocation API则可以用于获取用户的地理位置信息。
总的来说,HTML是一种强大的标记语言,它使得我们可以在网络上创建和分享各种类型的信息。通过使用HTML,我们可以构建出具有丰富内容和交互性的网页和网站。
ECharts是一款基于JavaScript的数据可视化图表库,能够流畅运行在PC和移动设备上,兼容当前绝大部分浏览器。ECharts提供了直观、生动、可交互、可高度个性化定制的数据可视化图表。它支持常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、旭日图,多维数据可视化的平行坐标,还有用于BI的漏斗图,仪表盘等12类图表。同时,ECharts还提供了标题、详情气泡、图例、值域、数据区域、时间轴、工具箱等7个交互组件,支持多图表、组件的联动和混搭展现。
MySQL是由瑞典MySQL AB公司开发的关系数据库管理系统,是最流行的关系型数据库管理系统之一。MySQL数据库主要目标是健壮、快速和易用[8]。MySQL使用的SQL语言是访问数据库最常用的标准化语言;MySQL 将数据存储在不同的表中,而不是将所有数据放在一个大型仓库中,这提高了速度和灵活性。在web应用方面,MySQL是最好的RDBMS(关系数据库管理系统)应用软件之一,由于MySQL体积小、速度快、总体拥有成本低,尤其是开源,所以一般选择MySQL作为中小型网站开发的网站数据库。
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive设计的初衷是使数据汇总、查询和分析变得更加简单,它提供了类SQL的查询语言HQL,允许用户更加简单地进行查询、汇总和数据分析。
此外,Hive的执行引擎可以是MR、Spark、Tez等,如果执行引擎是MapReduce的话,Hive会将HQL翻译成MR进行数据的计算。用户可以使用命令行工具或JDBC驱动程序来连接到Hive。
Hive的优点包括学习成本低,可以通过类SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序,十分适合对数据仓库进行统计分析。
需求分析是项目开发的基础,是软件生命周期中的重要环节。因此,需求分析对于软件开发是非常重要的。一个成功的需求分析无疑在软件开发中扮演着重要的角色。开发系统的目的是要为用户提供好用的系统,最终为用户带来各种便利。
系统业务需求分析
书籍管理系统主要是对书籍信息的一个采集,还有对未来书籍一个流行趋势的敏感度
(1.)数据预处理:对收集到的数据进行空值处理计算每列的空值数量,并将结果打印出来。处理数据中的空值,通过填充平均值来填补空值。对数据按照“id”列进行分组,并计算每个“id”值的出现次数,每年图书占比的变化推测
(2)建立仓库:将预处理以后的数据通过hive放入数据仓库
(3)导入导出:通过kettle连接hive。通过kettle连接mysql。因为在spark中将数据处理过了,所以不需要太多的预处理操作
(4)可视化界面
(5.)预测:数据进行了预处理,包括拆分、清洗和归一化。使用tensorflowr进行预测,通过已经拥有的数据预测未来图书是否流行,未来十年图书进货的数量。预测结果:将预测后的数据制作了一个饼状图,清晰的展示未来十年书籍流行的一个数量
通过将数据预处理后,可以得到评论排行最多的前十,书籍价格最少的前十,书籍折扣散点图,每年书籍出售占比环形图,可以更清晰的展示预测未来十年书籍流行的一个数量。
数据库在管理系统中起着非常重要的作用。数据库结构设计的质量将直接影响到应用系统的效率和实现效果。合理的数据库结构设计可以提高存储效率,保证数据的完整性和一致性。同时,合理的数据库结构也将有利于程序的实现
以下是通过spoon导入到mysql的表
检查空值情况,处理空值,计算每列的空值数量,并将结果打印出来,首先,isnull(col)函数会返回一个布尔值序列,其中True表示对应位置的值是空值,False表示不是空值。然后,data.filter()函数会根据这个布尔值序列筛选出包含空值的行。最后,count()函数用于计算筛选后的行数,即空值的数量。用均值填充,处理数据中的空值,通过填充平均值来填补空值,并打印出每列的空值数量。检查重复值,处理重复值对数据按照"id"列进行分组,并计算每个"id"值的出现次数。最后保存到数据库。
ads
dws
Dwd和ods
使用kattel进行操作。首先在虚拟机里面打开hive
通过ifconfig查看主机名称
在项目中,我们首先收集了大量的历史数据,包括每年出版的图书数量,原价,现价,折扣等。然后,我们使用数据分析工具对这些数据进行了处理和分析,得出了各个年份出版图书的占比情况。通过对这些数据的可视化展示,我们可以清晰地观察到出版业的发展趋势和变化趋势。
通过时间序列的预测得到的结论是:在未来十年里,2027,2028,2029,2030,这四年的书籍流行度最大,商家应该在这四年多进货进行推销,2031年少进货,大家对书籍的购买需求降低