草庐IT

华为云图引擎服务

程思扬 2024-01-07 原文

前言

本文将分为以下3个部分进行介绍:

第1章 什么是图计算

第2章 图引擎服务介绍

第3章 查询和分析功能介绍

本文主要介绍了图计算定义及特点,希望通过本文能够让你了解图计算及华为云图引擎服务,掌握使用图引擎进行查询和分析

一、什么是图计算

1.图.无处不在

在现实生活中,人与人,物品与物品,人与物品之间存在着多样性的关系,我们会获得多种多样的图,如下所示,可以看出图在我们现实生活中是无处不在的。

通信网络

顶点: devices, routers; 边: network flow

社交网络

顶点: users, posts; 边: relations, Likes

用户商品图

顶点: users, items; 边: Ratings

天气变化的Wiki文章

顶点: Wiki articles; 边: Links

2. 什么是图计算

• 定义:“图计算”是以“关系”为基础对现实世界的一种“图”结构的抽象表达,以及在这种数据结构上的计算模式

• 描述: G = (V,E,D) V = vertex (顶点或者节点) E = edge (边) D = data (属性&权重)

• 擅长: 擅长处理具备连接关系的、海量的、多变的数据的查询、分析;

特点:

• 不依赖数据的结构化,数据多样

• 多数据关联,具备传播能力

• 数据动态变化,实时交互式分析

• 可解释

天然就是图数据关系:

• 社交关系

• 资讯传播网络

• 通信网络

• 组织结构

• ……

适合场景:

• 意见领袖挖掘

• 好友推荐

• 用户分群

• 组织结构分析

• ……

3. 图计算优势

• 表达能力强,适合表达多种复杂关系、支持丰富语义

从表达能力上看,传统数据库表达数据相对单一,图计算可以支持N对N的表达,形式更加多样,表达能力更强

丰富的数据表达,可扩展性支持

关系数据库 图计算

(1:1或1:N) (N:N)

• 大数据量下,潜在关系挖掘 快速高效

从性能上看,图计算对于多重关系的查询速度远远高于传统的数据库,同时图具备高性能的并行计算能力

无论从表达能力上还是性能上均可以看出,图计算具有更大的应用优势,

快速的多跳关系查询

跳数

关系数据库

图引擎服务

返回的记录数

2

0.162

0.025289

213597

3

63.589

0.779019

1031115

4

1368.662

1.452095

1227152

5

未完成

1.474496

1230000

• 图计算可能成为AI下一跳的关键基础技术

图计算在高维稀疏场景性能有望提升百倍

NIPS/SIGMOD/NDSI等数据库、图计算和AI领域顶会观点总结:

• 数学上,在AI计算中,图计算和深度学习是硬币两面,具有等价性、可互换

4. 图计算 ∙ 稳步上升到顶峰阶段

5. 图计算发展-技术日趋完善,生态日趋稳定

图计算功能如今技术已日趋完善,很多公司都发布了自己的图计算产品,生态也已趋稳定

2、 图引擎服务介绍

1. 图引擎服务:超大规模一体化图分析与查询

华为云图引擎服务是一种超大规模一体化图分析与查询平台,内部具有丰富的图分析算法库,高性能的图计算内核,分布式高性能存储引擎,支持属性图的扩展,同时开源接口兼容,并且结果呈现格式上多样化,具有大规模,高性能,查询分析一体化,简单易用等优点

2. 图引擎服务整体解决方案

用户可以将自己的历史数据批量式的导入图引擎服务,同时还提供了增量式的数据导入方式,方便用户进行实时的数据更新,也可以通过图引擎提供的SDK轻松访问图引擎服务,使用方便,操作简单。

3. 图引擎服务使用页面

• 图查询区:支持标准图查询语言Gremlin,兼容您的使用习惯

• 图分析区:提供丰富的图分析算法,简单易用

• 可视化区:支持,所见即所得可视化展示

• 结果记录区:操作记录可见,支持JSON格式结果导出, 轻松获取

4. 使用场景

华为云图引擎服务使用场景也非常丰富

互联网

好友/商品/资

讯推荐

异常行为分析舆情分析

知识图谱

智能问答知识消歧

学习路径推荐

金融风控

实时欺诈检测失联人员追踪信度分析

智慧城市

路径规划

管道压力调节城市路网调控

3、 查询功能

什么是Gremlin?

Gremlin是Apache TinkerPop 框架下的图遍历语言Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图

(property graph)的遍历或查询每个Gremlin遍历由一系列步骤

(step,可能存在嵌套)组成,每一步都在数据流(data stream) 上执行一个原子操作

除了华为图引擎服务,TA们也用的是Gremlin,已经成为业界的事实标准

    

1. Gremlin基本操作(一)

常用的语句如下所示,通过各个语句的轻松组合可以实现复杂查询功能

• map(x)

select(“a”,”b”) id() mean() count()value(“age”) order()sum() groupCount()

• flatMap(x)

out(“knows”) values(“name”) properties() v()in(“created”) match(x,y,z) outE(“knows”)

• filter(x)

has(“name”,“gremlin”) and(x,y)coin(0.5)dedup(10)where(“a”,eq(“b”)or(x,y)sample(10)

• sideEffect(x)

groupCount(“m”)tree(“m”)subgraph(“m”)store(“m”)group(“m”)

2. Gremlin基本操作(二)

例如: “gremlin” 认识的人的年龄分布

我们可以将其分解为以下五个步骤

(1) 所有人

(2) 然后找到名字为“gremlin”的人

(3) gremlin” 认识的人

(4) 基于上一步,查询这些人的年龄

(5) 获得年龄分布

通过以上五个步骤,我们可以实现gremlin” 认识的人的年龄分布

3. 查询功能总结

支持业界标准图查询语言:Gremlin

Gremlin 遍历由一系列步骤(可能存在嵌套)组成,每一步都在数据流上执行一个原子操作

基本操作:map(x), filterMap(x)、filter(x)、sideEffect(x)等:

举例:”gremlin“认识的人的年龄分布

g.V().has("name","gremlin").cout("knows").values("age").groupCount()

以上是对华为云图引擎做的简要介绍

4、 分析功能

1. 应用场景和算法联系

2.算法实践: 社交网络 — 个体价值发掘

背景:

以新浪微博为例,如何给每个用户评分?

(传统评分=关注数+粉丝数+微博数)

基于PageRank的用户评价

利用各种中心度(centrality),TrustRank之类的算法寻找社交网络中的领袖人物(高价值用户)

3. 算法实践: 社交网络 — 好友推荐

背景:

你在 Facebook 上更新一下联系人,会得到后台很多联系人推送,你会发现Facebook 的推送节制而高效, 既没过分打扰,又能打开你的人脉

 

基于三元闭包理论的好友推荐

基于三元闭包理论,结合图上的三角计数,聚类系数,最短路径,k度好友,关联预测等算法,进行社交网络紧密度分析,实现好友推荐

4. 算法实践: 社交网络 — 社团推荐

背景:

已知老王的朋友圈里的人相关信息,能否估计老王经济状况、信用风险?

 

    

“物以类聚,人以群分”

利用社团算法(K-core, Louvain,Label Propagation等)进行社团/群组分析

5. 算法实践: 社交/多媒体/电商 — 实时推荐

背景:

某电影平台上,拥有庞大的用户群、电影库,如何在用户进行一系列行为时进行实时精准的推荐?

如何解决数据稀疏性问题,如何考虑复杂的关系的影响……?

采用Pixie、GRank等多种算法进行大数据量、复杂场景下的实时推荐

6. 算法实践: 分析功能总结

应用场景:社交网络、精准营销、信贷保险等

功能划分:找关联(链路分析、度/邻居)、找路径、找群体( 社团类、传播类)、找特征

图计算算法:PageRank、最短路、K-hop、聚类系数、三角计数、Centrality、最大关联子图、

Degree Correlation、K-core、标签传播、Louvain、PPR、关系预测、传播模型、node2vec等

算法实践举例:

个体价值发掘:

PageRank、Centrality、TrustRank 等

好友推荐:

基于三元闭包理论

三角计数,聚类系数,最短路径,k度好友等

社团发现:

K-core, Louvain,Label Propagation等社团算法

实时推荐:

Pixie、GRank等

有关华为云图引擎服务的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  7. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  8. ruby-on-rails - Rails 中的推荐引擎 - 2

    我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  10. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

随机推荐