我先去问了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中无法执行