通过调用nebula-algorithm算法接口,使用louvain算法。

大佬们好,我目前在尝试调用nebula-algorithm算法接口,使用louvain算法。
自己之前很少接触这块,所以看了说明文档感觉还是很懵。所以想请教下面几个问题:

  1. 在pom.xml中添加依赖。
    image
    我通过文档上的“示例”进入github,将nebula-algorithm下所有文件都下载了:
    image
    但是我发现example文件夹和nebula-algorithm文件夹下都有pom.xml文件,我应该在哪个里面添加依赖呢?
  2. 如何运行示例呢?
    PageRankExample.scala 这个示例我差不多看明白了,如何运行它呢?
    比如,我想针对nebula graph中的basketballplayer,进行louvain划分,是否也需要通过修改 application.conf(我知道通过直接提交算法包需要用到这个配置文件) ,将数据源、使用的算法和结果路径进行配置呢?
    我尝试修改了下 application.conf:


    后续应该如何操作呢 :sweat_smile:
  3. 目前我是在k8s环境下,将application.conf配置文件、算法包、github下载的示例放在了一起,但不知道如何使用 :flushed:
    image

学的太浅薄,真心希望并感谢各位的指教!

  1. 加依赖是指 你要自己建project,然后在自己的project的pom.xml里面添加依赖。 你可以把example作为参照,example是一个单独的项目模块,在example中引用了nebula-algorithm这个依赖,所以代码中就可以调用nebula-algorithm中的算法了。
  2. 如何运行,你可以参考文档,配置文件修改好之后 通过spark-submit命令提交nebula-algorithm的jar包 来运行算法。
  3. 应该和2是同一个问题,都在k8s环境下的话,要求有spark环境,你要通过spark-submit来提交算法包,配置文件中指定了要执行哪个算法

好的 谢谢!

您好 我还想问下 louvain社区划分之后 可以输出评价指标嘛?我了解有个模块度指标。在networkx中,调用louvain算法后,可以查看社区划分的modularity,所以想问下图算法包怎么看这个指标。

算法包中louvain参数为
louvain: {
maxIter: 20
internalIter: 10
tol: 0.5
}
这个tol是指模块化差异阈值呢,还是指模块度呢?若为模块化差异阈值,理解为 模块度增益必须大于该阈值才会发生合并,设为0.5的话是不是太大了,毕竟模块度取值也是在0-1之间。若是模块度的话,能否可以理解为每次算法迭代的最终结果的模块度就是这个值呢?那也就是说评价指标就是这个tol。

submit 的话输出的字段是固定的,如果用 lib 的方式去调用,可以自定义一些输出,这个算法的实现在这里哈:https://github.com/vesoft-inc/nebula-algorithm/blob/master/nebula-algorithm/src/main/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgo.scala

里边也有 tol 的定义,是模块度差异阈值 threshold for modularity deference

lib 调用参考:https://github.com/vesoft-inc/nebula-algorithm/blob/master/example/src/main/scala/com/vesoft/nebula/algorithm/LouvainExample.scala

2 个赞

好的 谢谢!