Nebula Algorithm算法包Louvain算法返回值问题

提问参考模版:

  • nebula 版本:2.0.1

使用调用算法接口的形式,使用数据是华为云图算法电影测试数据总共1501条边,调用Louvain,使用示例的参数:
LouvainConfig louvainConfig = new LouvainConfig(20, 10, 0.5);
返回结果:

+------------------+------------------+
|               _id|          _louvain|
+------------------+------------------+
|154152014810465642|154152014810465642|
|144282131214915243|144282131214915243|
|136542570153186433|136542570153186433|
|135238425724570545|135238425724570545|
|127523923025157424|127523923025157424|
|122077392664060001|122077392664060001|
|120293580342152585|120293580342152585|
|119345060241444535|119345060241444535|
|112215445369353853|112215445369353853|
|110910529628330137|110910529628330137|
|110418220547321810|110418220547321810|
+------------------+------------------+

总共返回11条数据,这个代表11个社区?
有两个问题想请教:
1.我想知道每个社区里面有哪些成员,该怎么处理

2.算法参数是什么意思,有个大概的介绍吗?
10改成5,返回数据变成了18条
华为云的Louvain算法提供了2个参数:收敛精度和迭代次数,Nebula Algorithm的提供3个参数,后两个不知道怎么设置,其他算法有相似的参数参考的华为云图算法

想请问下,Nebula Algorithm 用起来每个请求大概响应时间要多久?

跟数据量大小和graphx的性能有关,具体没有测试过

LouvainConfig入参为: maxIter: Int, internalIter: Int, maxQ: Double
Louvain算法的思想:
1)将图中的每个节点看成一个独立的社区
2)对每个节点i,依次尝试把节点i分配到其每个邻居节点所在的社区. 计算分配前与分配后的模块度变化Δ𝑄,并记录Δ𝑄最大的那个邻居节点,如果𝑚𝑎𝑥Δ𝑄>0,则把节点i分配Δ𝑄最大的那个邻居节点所在的社区,否则保持不变;
3)重复2),直到所有节点的所属社区不再变化或者达到{internalIter}次;
4)对图进行压缩,将所有在同一个社区的节点压缩成一个新节点
5)重复1)直到整个图的模块度不再发生变化或者达到{maxIter}次。

3 个赞

谢谢,参数清楚什么意思了,Algorithm后续有没有考虑优化和扩展,比如Louvain可以知道分成了这么几个社区,每个社区有哪些成员

我们推荐使用api调用的形式, 目前算法包里面提供的算法结果都是节点和节点属性的形式,即算法结果是作为节点属性存在的。
你所提的Louvain算法结果就是节点id,该节点所属社区编码。
我们把所有算法的结果输出形式统一成节点id,节点属性, 结果是一个DataFrame, 如果你想得到每个社区内有哪些节点,可以根据节点属性这一列做聚合。

使用的api调用的形式,总共传入了1501条边数据,总共只返回了5条DataFrame数据。
使用count统计DataFrame总条数只有5,,里面应该没有社区子成员的数据。
±-----------------±-----------------+
| _id| _louvain|
±-----------------±-----------------+
|112215445369353853|112215445369353853|
|119345060241444535|119345060241444535|
|110418220547321810|110418220547321810|
|144282131214915243|144282131214915243|
|122523216840013232|122523216840013232|
±-----------------±-----------------+

你是什么形式提交的,看spark集群其他机器上有没有结果数据。 1501条边数据中有统计点数量不

maven更新的依赖,java-client形式调用的,spark本地运行。点总共221个

兄弟,我又来问你了,你的问题解决了不?我感觉是不是结果做了限制了,1000+的顶点只有20+的返回值,看源码成本有些高了……

不要一个问题多处发啊,会造成回复资源浪费的,参考下论坛的使用规范 论坛使用指北(最后更新于 2023.04.06)