一体化图数据处理平台软件系统_第1页
一体化图数据处理平台软件系统_第2页
一体化图数据处理平台软件系统_第3页
一体化图数据处理平台软件系统_第4页
一体化图数据处理平台软件系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一体化图数据处理平台软件系统摘要面对规模愈发庞大的数据量,传统关系型数据库难以良好的提供的计算支持,非关系型数据库中发展迅速的图数据库技术受到人们的广泛关注,作者利用图数据库Neo4j以及图计算引擎SparkGraphX,集成多种图数据处理算法,开发了一体化图数据处理平台软件系统,系统采用SpringBoot框架进行开发,利用Mysql数据库实现用户管理,对用户原有文本数据导入进图数据库中,平台对图数据库和计算引擎进行管理,以丰富的查询功能和用D3.js技术实现的可视化为图数据领域开发了一个通用的处理平台。关键词:图数据库、Neo4j、SparkGraphX、图计算AbstractFacedwiththeever-increasingamountofdata,traditionalrelationaldatabasesaredifficulttoprovidegoodcomputationalsupport.Therapiddevelopmentofgraphdatabasetechnologyinnon-relationaldatabaseshasattractedwidespreadattention.TheauthorsusegraphdatabaseNeo4jandgraphcomputingengineSparkGraphX.Integrateavarietyofgraphdataprocessingalgorithms,developanintegratedgraphdataprocessingplatformsoftwaresystem,thesystemusesSpringBootframeworkfordevelopment,useMysqldatabasetoachieveusermanagement,importuser'soriginaltextdataintothegraphdatabase,platformmapThedatabaseandthecalculationenginearemanaged,andageneralprocessingplatformisdevelopedforthegraphdatafieldwithrichqueryfunctionsandvisualizationrealizedbyD3.js.Keywords:graphdatabase,Neo4j,SparkGraphX,graphcalculation目录23516_WPSOffice_Level1第一章绪论 33793_WPSOffice_Level21.1研究背景和意义 316280_WPSOffice_Level31.1.1研究背景 310685_WPSOffice_Level31.1.2研究目的和意义 410641_WPSOffice_Level1第二章开发工具简介 55175_WPSOffice_Level22.1Neo4j简介 526382_WPSOffice_Level22.2SpringBoot简介 5674_WPSOffice_Level22.3SparkGraphX简介 620049_WPSOffice_Level1第三章模块设计 716368_WPSOffice_Level23.1整体架构 77481_WPSOffice_Level23.2用户管理 107775_WPSOffice_Level23.3数据存储 10412_WPSOffice_Level33.3.1用户信息数据存储 1020170_WPSOffice_Level33.3.2图数据存储 1216831_WPSOffice_Level23.4数据导入(ETL模块) 1223509_WPSOffice_Level23.5图数据库管理 1328001_WPSOffice_Level23.6SparkGraphX及算法模块 1312103_WPSOffice_Level33.6.1连通图分析 141061_WPSOffice_Level33.6.2标签传播算法 1431556_WPSOffice_Level33.6.3PageRank 149328_WPSOffice_Level33.6.4最短距离图 1528230_WPSOffice_Level23.7数据查询模块 1511749_WPSOffice_Level23.8可视化模块 154111_WPSOffice_Level1第四章平台测试 1623856_WPSOffice_Level1参考文献 2022240_WPSOffice_Level1致谢 21绪论研究背景和意义研究背景伴随大容量数据存储工具的更新和处理技术的发展,我们利用日益增多的数据的能力也在不断提高,但是传统的关系型数据库及其处理方法在大规模数据的计算处理中显得有些力不从心,而这些数据都可以以图的方式进行存储与计算。图是数据结构和算法学中最强大的框架之一,几乎可以用来表现所有类型的结构或系统,比方说交通网络和通信网络、人们的日常交际圈还有社交媒体的关注链等等,在寻找最佳的任务分配方式、寻找关系网中最核心人物等方面图都有广阔的发挥空间。这种方式在很多问题的解决上展现出了传统数据存储和处理方式所没有的优点与效率。下面我们通过六度关系理论来对传统关系型数据库和图数据库进行一个比较,所谓六度关系理论就是世界上任意两个人最多通过六个人就能产生联系,由于我们所需的只是这样的一个理论模型,所以我们不去验证这个理论的正确性。按照传统关系型数据库的理念,我们将每个人的社交圈储存为一张表,而表中的某个人又有其自身的社交圈表,那么为了使看上去毫不相关的两个人,比方说中国地质大学(武汉)的一个普通大学生小明和美国总统特朗普产生联系,首先我们要遍历小明的社交圈表,然后对表中的每一个人再遍历其社交圈表,假设每个人的社交圈表内有N个人,按照六度关系理论,最差要遍历N的五次幂张表,如果考虑到其他情况比如社交圈重叠等等,其复杂程度使得我们不得不寻求其他思路;而假设我们将每个人以图中的结点形式进行存储,社交关系作为图的边进行存储,一个很清晰结构便呈现在眼前,而图论中的遍历算法能够很好的帮我们解决这个问题,两个结点之间的路径轻而易举的就能得出;通过这个例子我们直观的感受到了图数据库的优点,现实生活中各种复杂的包含多种关系的模型都可以得到良好的处理。近年来,图数据库技术作为非关系型数据库中发展最迅猛的技术之一,诞生了Neo4j、FlockDB、AllegroGrap等较为著名的工具,其中Neo4j作为其中的佼佼者,拥有良好的数据导入效率,支持的Cypher查询语言语义清晰,开发社区活跃,对各种图数据处理的算法具有较好的支持;而SparkGraphX作为目前最为杰出的图数据计算引擎,其精简的代码结构使得我们能够较好的进行使用,使用的函数式编程语言Scala支持JVM环境,更便于我们使用Java工具进行开发,一体化图数据处理平台软件系统就是这些较为前沿的技术及工具作为背景和支持。同时当前社会存在各种各样对图数据处理的需求,在金融领域,存在风险防控、反欺诈、反洗钱、产业链分析、担保链分析、资本链分析等需求;在营销领域存在商品推荐、用户画像、潜在客户挖掘、客户潜在需求挖掘的需求;在社交领域需要社交影响力分析、口碑营销和广告投放、社会不良言论传播监控以及在公共安全领域存在嫌疑人社会关系梳理、嫌疑人间关联发现、与嫌疑人有隐性关系的对象挖掘的需求。图数据处理成为了满足这些需求的关键,需要一个能让用户自定义所需分析功能,同时支持可选的常用数据处理功能的平台即为众多需求下形成的研究和开发背景。研究目的和意义一体化图数据处理平台软件系统以满足用户需求为设计目的,只需将用户数据从所在平台导入图分析平台,经过层层处理,即能输出可与大数据或AI系统对接的分析结果,使得其拥有开箱即用的特点;系统同时支持图查询和图计算两大类分析方式,并可将两者组合起来完成更复杂的分析,并提供ETL、可视化等;其底层采用最先进的图数据库和图计算引擎系统,并通过优化实现对超大规模图上各类分析任务的高效处理;同时提供兼容目前主流的图分析模型/数据模型/接口的标准化访问使得它拥有了更广阔的应用前景。将非关系型数据库技术与现实模型结合,集成多种图数据处理方式于一体,能够使得各类图算法与数据分析技术更具整体性和结构性,良好的将纷繁的理论以结构化的工具提供给相关领域的学习和工作人员。开发工具简介Neo4j简介上文我们通过对比了解了图数据库相对与传统关系型数据库的优势,习惯于使用关系数据库的开发者初次接触Neo4j也许会惊诧于这种数据库的设计与表现形式。Neo4j是一个具有较高性能的图形数据库,不同于关系型数据库将数据储存在表中,它将结构化的数据存在以结点和关系为基础的网络中。同时它也可以作为一个高性能的图引擎,Neo4j具备一个成熟数据库该具备的所有特性。开发者在一个面向对象的、灵活的网络结构下进行开发,而不是严格、静态的表,但是与此同时,他们仍然可以享受到具备完全的事务特性、企业级的数据库所拥有的所有优点。图形数据库的巧妙就在于利用良好的数学模型将数据进行存储,而我们生活中的大部分数据都符合图的数学定义。下面我们用图像来直观的感受图数据库的魅力:这是个人与公司及银行的交易、担保等关系的测试数据,可以直观的看出,在Neo4j中我们将数据以关系和结点的形式进行存储,而关系和结点都带有表示其属性的多个键值对。不仅仅是这类测试数据,每个数据模型都是图模型:无论是使用单一模型还是采用多模型数据库技术,我都会这样说:图形是如此灵活的模型,它们是一种能够容忍-或者实际上-拥抱-许多不同领域和数据的模型,他们可能就是你所需要的REF_Ref8809281\r\h[1]。通过使用Neo4j提供的服务器,我们可以使用http://localhost:7474/地址来观察我们的数据,其支持的Cypher查询语言,我们常称为CQL,类似于我们较常使用的SQL语句,遵循SQL语法,是非常简单且人性化、可读的格式。SpringBoot简介对于Java开发者来说,不断出现的第三方技术集成使得开发的内容越来越丰富多样,但同时也造成了繁多的配置、低下的开发效率,而开源框架的出现使得开发变得轻快起来,其中最令人瞩目的便是SpringBoot了,它作为一个全新的应用框架,由Pivota团队进行设计开发,其设计目的是用来简化Spring应用的初始搭建和开发过程。SpringBoot框架使用了条件注解的方式来进行配置,从而使开发人员从定义样板化的配置中解脱出来。所以实际上Springboot并不是一种新的框架,而是默认配置了很多框架的使用方式。SpringBoot的优势有很多:首先,通过它开发者可以快速构建项目;其中内嵌了Tomcat、Jetty或者Undertow可供选择,使项目能够独立运行而无须外部依赖Servlet容器;同时它对主流的开发框架几乎无配置集成,SpringBoot应用为这些主流的第三方库提供的支持使得它们具备了开箱即用的能力,解放了程序开发人员,使他们能够有更多的时间去写所需要的业务代码;SpringBoot框架实现了无冗余代码生成和XML强制配置,它遵循“约定大于配置”;它还能够提供运行时的应用监控,极大地提高了开发和部署效率。SparkGraphX简介Spark最初诞生于美国加州大学伯克利分校(UCBerkeley)的AMP实验室,是一个可应用于大规模数据处理的快速、通用引擎REF_Ref8809380\r\h[2]。自从在2013年Spark加入Apache孵化器项目后,它的发展势头不断高涨,现如今它已经成为了Apache软件基金会最重要的三大分布式计算系统开源项目之一(即Hadoop、Spark、Storm)。Spark设计开发的初始目标是是使数据分析变得更快,这里的快速不仅是指它的运行速度快,同时也要具备快速、容易地编写程序的能力。为了提高程序运行的速度,Spark提供开辟了内存进行计算,减少了从磁盘中来回读取和存储数据的开销;同时Spark为了降低程序编写工作的复杂度,选择使用简练、优雅的函数式编程语言Scala来进行编写,Scala可以随时输出中间处理结果而无须等待最终整体的实现,降低了修改测试程序的难度,能够给开发者提供交互式的体验。目前来说虽然Hadoop已成为大数据领域公认的标准,但是它的分布式计算模型MapReduce仍然拥有很多需要弥补的地方,比方说它提供的Map和Reduce操作无法满足多样需求,缺乏表达力,以及较高的时延而无法满足交互式数据和实时数据处理的需求;而Spark不仅具备HadoopMapReduce所具有的优点,且解决了HadoopMapReduce的缺陷。由于它一体化的结构和丰富的功能体系,Spark在大数据发展火热的今天成为了该领域中的佼佼者。而GraphX是ApacheSpark提供给用户进行图计算以及图形并行计算的API,和其他数据计算引擎相比它有很多的优点:GraphX具有良好的灵活性,我们可以无缝的使用图形和集合,GraphX在单个系统中统一ETL,探索性分析和迭代图计算。我们可以查看与图形和集合相同的数据,有效地使用RDD转换和连接图形,以及使用PregelAPI编写自定义迭代图算法。所谓RDD就是弹性分布式数据集,RDD是只读的、分区记录的集合,RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建REF_Ref8809417\r\h[3]。所谓弹性,可以从以下三点进行理解:(1)上文提到过Spark的优点其一在于开辟内存进行计算以减少磁盘IO,提升了计算的效率,而RDD则能够实现手动的或自动的在内存和磁盘中进行切换;(2)RDD可以经由命令转换成新的RDD,通过一组操作创建出的RDD们即拥有所谓的“血统”关系定义;(3)RDD的灵活性也在于拥有存储任意类型的数据;在编写Spark程序进行计算时,我们对这种数据集的操作类似于一种只读的数据,然而实际上RDD并不存储真实数据而是只存储获取数据的方法,以及分区的方法,还有就是数据的类型。此外,GraphX还具有优良的速度,与最快的专业图形处理系统相比具有可比性,GraphX与最快的图形系统竞争性能,同时保留Spark的灵活性,容错性和易用性。GraphX不仅提供了高度灵活的API供开发人员使用,还提供了PageRank等各种图形算法,而且其中许多都是由社区用户提供的,集结了很多人的智慧,为图数据处理提供了很多的想法的构思,相关内容下文的算法模块部分会有更多叙述。模块设计整体架构首先我们明确出该一体化图数据处理平台软件系统的两大核心模块,一个是Neo4j图数据库模块,每个用户最终的数据都是存放在图数据库中的,但一个用户可以拥有多个图数据库,另一大模块就是SparkGraphX算法引擎模块,一个用户可以将自己的数据库和算法引擎结合起来,定制出自己独特的一个数据管理和处理的域。如下图所示,整个系统的第一步就是从用户数据集中进行数据的建模抽取和存储,然后通过一体化图数据处理平台软件系统对用户或应用系统提出的图分析请求如寻找结点或关系以及最短路径等,处理之后将分析结果实时的展现给用户,同时可以对结果进行存储,将用户的数据集与结果集以及定制的部分算法的引擎封装起来,作为用户的整个数据处理与存储平台的个人空间。下图展示了一体化图数据处理平台软件系统的整个结构组成,为了实现图数据处理功能对外部数据导入和应用访问的兼容性,需要严格控制数据模型和访问接口的统一化和标准化;系统对每个用户个体的个人数据处理平台域内的各类信息要做到良好的管理和监控,才能保证用户良好的数据处理体验;底层数据存在一个桥接的需要,原因在于使用的SparkGraphX算法使用的是Scala语言,而最终数据的存储和可视化展示都是在Java的基础上进行实现的,所以这部分较为重要;中间的数据ETL和索引以及管理都在各大功能模块中进行了实现;在用户层面,系统以简洁美观的交互界面对平台功能进行整合展示,对中间数据即处理结果等进行可视化展示。在层次机构设计方面,基于SpringBoot的开发让我们能够方便的利用注解在少量的配置下编写业务代码,如下图所示,前端设计完成的页面有着各种方法的触发,对应的后台的各类controller实现请求的处理,来调用Service完成业务逻辑的处理,通过各类组件对service进行管理同时完成对数据源的读取、图数据库的配置和图计算引擎的管理。用户管理对于每个用户来说,一体化图数据处理平台软件系统拥有与其他普通用户管理类似的功能:首先就是注册和登录的基本功能,所以建立用户模型时首先要包含注册和登录必要的属性如:用户ID、用户名、密码;在登录进入平台后系统首先会为用户默认配置一个图数据库路径,平台针对不同的需求使用了Neo4j的两种使用模式即嵌入式方法和服务器式方法,两种模式都有其相对应的模型,在它们的模型中用户ID作为标识表明用户所拥有的图数据库,类似于关系数据库中的外键;另外一个就是用户使用的GraphX引擎模型中也将用户ID作为标识属性;这三大类模型定义组合起来我们将其建模,作为一体化图数据处理平台软件系统的总模型进行管理。为通过上述模型实现用户管理,项目需建立model包,其中拥有用户模型、Neo4j本地模型、服务式neo4j模型、GraphX模型和整合总模型;在controller包中建立用户管理控制器,利用@RequestMapping、@ResponseBody注解实现调用service包内注册登录的代码功能模块。数据存储用户信息数据存储平台利用Mysql对用户信息进行存储,根据上述模型定义,用户信息包括个人信息如用户名及密码字段;包括用户所使用的图数据库路径,嵌入式的和服务器式的信息;用户所用GraphX计算引擎的信息如集群端口和IP;最终为满足需求数据库中有以下几个表:第一个表graphhub作为整体模型的数据库存储表,其中的字段如下:ID独立标志一个总模型对象,第二个字段是名称,第三个是用户ID对应着该整体域所属的用户是谁,neo4j_id指明了服务式数据库,graphx_id指明了算法引擎,embedded_neo4j_id指明了使用的嵌入式的图数据库,graph_createtime记录域的创建时间,state表明激活状态。Graphx表记录了计算引擎的信息:字段依次是引擎ID,使用的GraphX的名称,端口信息,对应的用户ID,GraphX的版本,其中的操作,创建时间;neo4j表记录了服务式图数据库的信息:字段分别是服务式neo4j数据库的id,名称,端口号,对应用户ID,neo4j数据库的用户名、密码、使用的版本、创建时间;neo4jlocal表记录了嵌入式的本地数据库信息:字段为嵌入式neo4j的ID、名称、对应用户ID、Neo4j数据库的本地路径、创建时间;User表则记录了用户信息:字段为用户ID、密码、用户名、注册邮箱。图数据存储用户在登录时平台会创建提交一个默认的Neo4j图数据库地址用以使用时的数据存储。在登录进入平台之后用户可以选择创建新的图数据库以及对已有图数据库的修改、删除等操作。图数据是存储在Neo4j中的,在图数据库中,共有两大数据类型,一种就是结点,另一个即为关系,结点可以拥有多组键值对作为其属性,关系类型亦然,需要注意的是关系是有方向的,所以一个关系对应的两个结点必然要区分为开始结点和结束结点,在进行存储导入时我们需要注意要先对结点数据进行存储,然后再存储关系数据,如果顺序错误的话,先将关系数据存储进去会出现关系找不到头尾结点的情况。数据导入(ETL模块)对于一体化图数据处理平台软件系统的用户来说,用户个体拥有的想处理的图结构数据一般为文本文件,而CSV这种按行对每条记录进行分割,用分隔符对每条记录不同字段进行区分的文件格式经常用来作为不同程序之间数据交互的格式。为了能够对数据进行计算处理,我们必须先将CSV文件处理并导入到图数据库中,在项目中的实现我们通过引入csvreader的包,调用csvreader和csvwriter对文件进行读取和处理实现功能;用户在前端填写文件路径实现文件选择后,我们需要注意CSV文件的分隔符所使用的是什么,在数据导入时需要进行填写,默认为“,”进行分割,若是以空格进行的分隔则填入“\t”。平台提供前五行数据的预览效果,方便用户对导入的数据进行查看;从CSV文件中抽取出数据后要进行选择,选择抽取出的是结点数据还是关系数据,平台通过字符流来对抽取的数据进行插入,分别编写了结点和关系流的插入代码进行实现。其中功能细化为结点数据为其添加标签,同时为其选择主键属性;若是关系数据的话,还要进行起始属性和结束属性的选择以及标签的添加,其他的键值对将会作为普通属性进行存储。导入方式分为全量更新和增量更新,区别就在于全量更新时首先将图数据库进行清除,再导入新的数据,增量更新保留原有数据,再加入新的数据。图数据库管理上文提到了使用neo4j有两种方式,一种是服务器式方法,另一种则是嵌入式方法。所以在开发时建立了两个实体分别对应两种不同的使用模式,嵌入式的实体中除了名称、ID等基本字段外只需多出一个本地数据库的路径字段,驱动时需要配置好端口等信息将其绑定到应用中即可;服务式的实体则需要建立IP、端口、Neo4j用户名和密码等字段,驱动时要建立连接进行交互。我们在controller包中建立了Neo4jManager类来对两种图数据库使用模式进行管理,在平台中对应着图数据库的添加修改和删除,建立了connect用于管理两种方式的驱动。对于第一种服务器式方法来说,用户本地坑不存在neo4j系统,用户使用环境甚至不支撑JVM,在这种条件下,使用服务器式方法,Neo4j数据库有单独的运行进程,而客户端和图数据库交互的方式是基于http协议的API,所以我们在建模时,服务式图数据库模型内含IP、端口等属性。而嵌入式方法并不是像传统嵌入式系统那样,将实际的物理数据库嵌进应用程序中,而是嵌入到Neo4j引擎(类和相关的过程)直接运行和管理Neo4j数据库。嵌入式的方法代表在同一个JVM中同时驻留运行着应用程序和图数据库引擎。嵌入式方法需要适当的库(JAR文件)进行捆绑,或者是应用程序开始时你的应用程序可用这个库。然后,通过实例化GraphDatabaseService接口上的适当实例获得对库的访问后,就该由你的应用程序负责,你的应用程序就能够利用这个引用与Neo4j交互REF_Ref8809455\r\h[4]。SparkGraphX及算法模块图数据库平台前端图数据库平台前端算法实现代码包算法调用API接口算法实现代码包算法调用API接口上图是图计算模块的结构图,首先在平台前端触发请求,将数据从图数据库中提取出来同时调用API接口,算法的API接口调用算法的实现代码,完成计算并返回给前端。由于存在客户的计算量较大的情况,我们可以选择嵌入GraphX,同时选择使用远程调用集群的方式对用户的计算需求进行处理,所以在创建GraphX实体时,需要创建GraphX的IP、端口、版本等属性。Spark支持函数式编程语言Scala,所以我们需要配置Scala语言环境和开发工具插件,之后通过GraphX提供的算法进行分析。在这里就存在一个重要的问题,在数据计算和获取过程中存在两种语言,虽然Scala也支持JVM运行环境,但其中的数据转换是非常重要的,如何高效的转换成了关键。经过编码和测试,我们通过获取图数据库中的查询结果,将其解析并封装成Java中的List结构,之后转化为Scala中的Seq,进而可以转化为Array,从而生成图进行计算。连通图分析我们先从定义着手,图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的,无向图中,如果任意两个顶点之间都能够连通,则称此无向图为连通图REF_Ref8981407\r\h[6]。而在图数据库neo4j里,每一个关系都是有方向的,所以neo4j里全部是有向图。有向图中,若任意两个顶点Vi和Vj,满足从Vi到Vj以及从Vj到Vi都连通,也就是都含有至少一条通路,则称此有向图为强连通图REF_Ref8981660\r\h[7]。还存在一种弱连通图的定义即有向图中在同一方向上存在通路则称为弱连通图,对于平台用户来说,针对不同的需求会需要以不同的定义来进行分析,所以目前先进行定义,实际落实到不同的应用时再作实现。标签传播算法标签传播算法是一种寻找图中相似数据的算法,它的核心思想类似于“近朱者赤近墨者黑”这一想法,同时认为相似的数据应该拥有相同的标签。为了深入了解标签传播算法,我们首先要了解社区及社区发现:所谓社区就是网络图内部连接比较紧密的结点子集合对应的子图,其中如果每个社区的结点集合之间彼此没有交集,则称之为非重叠型社区,反之如果每个社区的结点有交集则将其称为重叠型社区。而社区发现就是在给定的网络图中寻找社区结构的过程,可以说这是一种聚类的方式。了解了何为社区和社区发现之后,我们发现标签传播算法是一种发现非重叠社区的算法,它的基本原则是将一个结点的邻居结点的标签中数量最多的那一个标签作为该结点自身的标签。每个结点通过其被添加的标签来表明它属于哪个社区,通过这种传播方式使得相似结点形成社区结构。算法中一个结点的标签取决于它邻居结点的标签:假设结点z的邻居结点有z1至zk,那么哪个社区包含z的邻居结点最多z就属于那个社区(或者说z的邻居中包含哪个社区的标签最多,z就属于哪个社区),优点是收敛周期短,无需任何先验参数(不需事先指定社区个数和大小),算法执行过程中不需要计算任何社区指标REF_Ref8996396\r\h[8]。PageRankPageRank可以算是图算法中最为经典的算法之一了,该算法又被称为网页排名或谷歌左侧排名,一开始PageRank是用来为搜索引擎提供一种根据网页之间相互指向的超链接进行计算,得到每个网页的权重,来作为网页排名的要素之一,以Google公司创办人拉里·佩奇(LarryPage)之姓来命名,Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一REF_Ref8809476\r\h[5]。而在图数据分析中,PageRank被用来衡量图中每个顶点的重要性,假设从某结点A存在到另一结点B的边,代表结点A对结点B的重要性认可。举例来说,如果一个新浪微博用户得到很多其他用户的关注,代表着该用户被很多用户认可,在用户网络图中也就拥有很高的重要性,该用户也会获得较高的排名,可见这钟方式在重要用户分析等应用方面有很大作用。在SparkGraphX中,存在静态和动态的PageRank算法实现。静态的PageRank算法运行在固定的迭代次数,动态的PageRank算法运行直到整个排名收敛(eg:通过限定可容忍的值来停止迭代)REF_Ref8997349\r\h错误!未找到引用源。。在项目实现时平台也实现了两种PageRank的算法:动态算法要需要用户输入,最短距离图这也是在图的分析中最为常见和使用的算法之一,而且在我们的日常生活中有许多应用,比如寻找两地之间最短路径等。而最短路径含有多种情况,寻找单源最短路径时,当每条路径上的权值都相等时,我们可以调用ShortestPaths.run(graph,landmarks)得到graph中的顶点到确定点的距离。而当权值不相等时,Dijkstra算法可以解决这个问题。遗憾的是,GraphX目前(Spark2.0.2)并未提供这样的API,好在在社区中我们寻找到了基于GraphX的Dijkstra算法实现,以及Prime算法和多源最短路径的FloydWarshall算法。数据查询模块我们知道Neo4j数据库支持Cypher语句查询,所以我们提供一个接口,让用户能够自行编写Cypher语句执行自己想要的查询;但是为了降低用户的使用难度,如果用户仍需学习相关查询语言,这就提高了用户处理查看图数据的门槛,于是一个将用户常用数据查询功能模块就显得非常必要了。我们将图数据库中存储的结点和关系类型全都提供给用户,让用户可以进行选择,以及常用的增删查改功能一并提供按钮给用户,用户只需进行点击就可触发对应的操作。可视化模块不管是导入完成后的整体数据浏览,还是用户选择后的查询结果,直观的用图形展示给用户是很有必要的,图数据库中,结点类型和关系类型的可视化可以使用D3.js技术进行实现。D3的全称是Data-DrivenDocuments(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3.js。D3.js功能强大但是较难掌握。在可视化实现过程中,我们需要注意的一点是,结点和关系的连接顺序问题,在绘图时,关系对应的结点位置顺序需要作为关系的一个属性传进去,最终形成“{"links":[{"no":1,"zdbje":100000,"sum":2,"label":"ZDB","source":0,"id":8,"zdbcs":1,"target":1},{"no":2,"zdbje":200000,"sum":2,"label":"ZDB","source":1,"id":9,"zdbcs":2,"target":0}],"nodes":[{"khxm":"担保人001","csrq":"nul","gh":"nul","yxjgdm":"yxjgdm_DB_001","creditcode":"担保人00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论