首页 理论教育高校图书馆大数据应用研究探索

高校图书馆大数据应用研究探索

【摘要】:①应用Spark函数对馆藏书目库和论文库中的数据进行处理,共构成5组二元组,保存为RDD,见表10.5。图10.6基于“作者”的图书与论文关联三元组基于大规模图计算的排名技术。通过以下的API存取图书、论文等文献,以及完成反馈的动作。图10.8数据实时服务系统查询及显示技术。

技术解决方案包括数据离线计算和数据实时服务两部分。数据离线计算(本系统的主体部分):通过Hadoop结合Spark集群对数据进行离线计算,产生海量的“关联”二元组和带权重的“三元组”,持久化到图数据库Neo4j中;另外,基于Spark的GraphX图计算技术,对推荐进行排名运算,提供给Web系统进行实时推荐服务。值得注意的是,从设计原理上看,Spark集群产生的海量数据也可以保存在内存中供Web系统调用。采取离线计算方式,将运行结果保存到数据库而非内存中,是因为在开发过程中,由于硬件设备受限,Spark集群的内存有限,因此难以存储百亿级别的中间数据。离线计算方式是在有限条件下的替代方案,不影响推荐效果。数据实时服务:通过基于Jersey框架的RESTful的API对外提供以Json为数据格式的实时访问服务。

1.数据离线计算

将来自图书馆书目数据库、论文数据库的数据输出到文件后,由Spark(整合Hadoop)集群进行计算,然后将计算结果输出到文件中,离线计算的拓扑图如图10.5所示。本次设计的服务器集群由三台服务器组成(一个Master节点和两个Worker节点)。

图10.5 离线计算拓扑图

(1)文献“关联”技术。

①应用Spark函数对馆藏书目库和论文库中的数据进行处理,共构成5组二元组,保存为RDD,见表10.5。

表10.5 基础数据RDD

②构建关联三元组。以图书与论文基于“作者”的关联为例说明构建技术和构建过程。其他关联三元组的构建原理相同,不再赘述。

根据评分策略,基于“作者”的关联设计权重为3,由paperAuthorIdRDD和bookAuthorIdRDD做join和map,得到paperBookRelationshipByAuthorRDD,三元组结构为(图书id,论文id,权重值),代码如下:

关联效果如图10.6所示。

图10.6 基于“作者”的图书与论文关联三元组

(2)基于大规模图计算的排名技术。在技术实现上分为以下步骤:

①由关联RDD构建大规模推荐基础网络。

②由基础网络重构带合并权重的推荐网络,计算网络节点的总权重并设置为节点属性。

③将带合并权重的推荐网络映射回RDD。

A.大规模推荐基础网络的构建

基于上述创建的关联三元组(前两项为文献id,第三项为权重值),以三元组的第一项为源节点,第二项为目标节点,将三元组的权重值设置源节点与目标节点的权重值,构建关联推荐基础网络。构建过程包括如下步骤:

a.从文件加载所有图书、论文,返回格式为(节点id,边权重之和)的节点,每个节点的“边权重之和”初始值为0;其中,创建图书节点的RDD(文件名:bookVertices)和论文节点的RDD(文件名:paperVertices)关键代码如下:

运行结果如图10.7所示。

图10.7 网络图节点的构建

c.利用spark的GraphX库,以vertices、edges生成属性图,其中顶点格式为(id,总权重),边的格式为(图书id,论文id,边的权重),生成图的代码为:

val graph:Graph[Int,Int]=Graph(vertices,edges)

B.带合并权重的推荐网络构建

a.合并平行边(出发节点和结束节点相同的边),并且将它们的权值相加,关键代码如下:

b.计算指向节点的边权重之和,并把总权重赋值给节点,关键代码如下:

C.带合并权重推荐网络映射回RDD。基于Spark技术将上一步的得到的合并权重网络映射到RDD文件,供显示系统调用。

a.从带合并权重推荐网络图中获得节点,将所有图书节点转为格式为“id,总权重,Book”的三元组RDD,命名为books;将所有论文节点转为格式为“id,总权重,Paper”的三元组RDD,命名为papers,关键代码如下:

b.从图中获得边,将图书与图书的联系转为格式为“源节点id,目标节点id,总权重,0”的三元组RDD,命名为bookBookRelationships;将论文与论文的联系转为格式为“源节点id,目标节点id,总权重,1”(注意这里的数值“1”的作用是区分关联的类别)的三元组RDD,命名为paperPaperRelationships;将图书与论文的联系转为格式为“源节点id,目标节点id,权重,2”的三元组RDD,命名为bookPaperRelationships,关键代码如下:

2.数据实时服务

数据实时服务以Web网站的方式提供。通过以下的API存取图书、论文等文献,以及完成反馈的动作。

(1)Jersey:采用JAX-RS标准(Java领域中对REST式的Web服务制定的实现标准)的开源框架。此处用来开发对外提供Json数据格式的文献API服务。

(2)MariaDB:MariaDB数据库管理系统是MySQL的一个分支。此处用来存储图书、论文。

(3)Neo4j:由Neo Technology公司开发的图形数据库管理系统。此处用来存储图书与图书、论文与论文以及论文与图书的关联信息。

3.实时服务系统及实现

实时服务系统结构如图10.8所示。

图10.8 数据实时服务系统

(1)查询及显示技术。通过监听“books”“papers”路径,依据请求中的路径(获取文献的类型,papers或者books)和参数(实体编号id)到MariaDB中查询实体(图书、论文),返回请求需要的文献,其执行流程如图10.9所示。

图10.9 查询和显示流程

查询和显示涉及的API见表10.6。

表10.6 查询和显示API

(2)推荐及显示技术。通过监听“recommend”(推荐)路径,依据请求中的路径(获取文献的类型,papers或者books)和参数(实体编号id,实体类型type),先到Neo4j中查询与该实体编号id有关联实体的实体编号id列表(依据实体的权重从大到小排序),然后根据列表到MariaDB中查询实体并返回实体列表,其流程如图10.10所示。

图10.10 推荐和显示流程

推荐和显示API见表10.7。

表10.7 推荐和显示API

(3)“点赞”及反馈技术。通过监听“feedback”(反馈)路径,依据请求的路径(“点赞”为like)和参数(实体编号id,实体类型type)增加该实体的权重,“点赞”及反馈流程如图10.11所示。

图10.11 “点赞”及反馈流程

“点赞”及反馈API见表10.8。

表10.8 “点赞”及反馈API