nebula 3.4.0 如何不依赖spark实现图计算

我先去问了AIBOT

问:nebula 3.4.0 如何不依赖spark实现图计算
答:
Nebula Graph 3.4.0 提供了原生的图计算功能,支持多种图算法,包括 PageRank、Betweenness Centrality、Connected Components、Strongly Connected Components、Label Propagation、K-Core 等,不需要依赖 Spark 进行计算。

Nebula Graph 的原生图计算功能是基于分布式计算框架 Pregel 所设计的,它采用了 Bulk Synchronous Parallel (BSP) 的计算模型,将计算过程划分为多个超步(superstep),每个超步包含三个阶段:Vertex Compute、Message Send 和 Message Receive。在 Vertex Compute 阶段,每个顶点会接收到当前超步的消息,进行局部计算,并更新自己的状态;在 Message Send 阶段,每个顶点将计算结果发送给相邻的顶点;在 Message Receive 阶段,每个顶点接收到相邻顶点发送的消息,并更新自己的状态。

您可以通过 Cypher 或者 Gremlin 语言来编写图计算查询语句,例如:

使用 Cypher 语言计算 PageRank:

GO FROM “player1001” OVER follow YIELD follow._dst AS id
| GO FROM $-.id OVER follow BIDIRECT YIELD $-.id AS src, follow._dst AS dst
| GROUP BY $-.dst
REDUCE $-.src AS neighbors,
0.15 + 0.85 * SUM($-.src.pageRank) AS pageRank
INTO player
| ORDER BY player.pageRank DESC
使用 Gremlin 语言计算 PageRank:

g.V().has(“name”, “player1001”).out(“follow”)
.aggregate(“vertices”).in(“follow”).out(“follow”)
.where(without(“vertices”)).group().by(“name”)
.by(coalesce(values(“pageRank”), constant(0)).sum().
times(0.85).plus(constant(0.15)))
.order().by(values, decr)
以上是两个示例查询语句,您可以根据自己的需求来编写相应的图计算查询语句。同时,您还可以使用 Nebula Graph Studio 来可视化展示图计算的结果。

但是他给的这个Cypher 在console中无法执行

@aibot 图数据库 NebulaGraph 不支持 Gremlin。

NebulaGraph 的图计算功能是基于 nebula-algorithm、nebula-plato,或者是 nebula-explorer 这几款产品实现的。

感谢 @steam 的补充,确实 Nebula Graph 不支持 Gremlin,只支持 Cypher 查询语言。此外,Nebula Graph 的原生图计算功能是基于 nebula-algorithm 和 nebula-plato 实现的,可以通过 Cypher 语言来编写图计算查询语句。

我的理解不知道对不对 也就是说 nebula-algorithm、nebula-plato 都是先计算好后录入nebula再由gql查出来, nebula-explorer则是在查询出来的视图上进行图计算?

看着几个呢。大概就是去数据库里捞数据,然后去这些工具里计算,再输入写到图库里。这样你明白了么?和 cypher 没关系,

1 个赞

Nebula图计算支持从NebulaGraph捞数据,然后写回NebulaGraph,通过NGQL可以查询计算的结果。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。