spark版本是3.2.1,nebula-algorithm是3.0.0版本,另外我是通过下面命令进入spark-shell
spark-shell --jars /opt/offline/nebula/nebula-algorithm-3.0.0.jar
spark版本是3.2.1,nebula-algorithm是3.0.0版本,另外我是通过下面命令进入spark-shell
spark-shell --jars /opt/offline/nebula/nebula-algorithm-3.0.0.jar
spark版本不兼容,algorithm只支持spark2.4
哦哦 好的 我改下版本试试 谢谢!
另外还想多问一下,1. 如果调用louvain算法进行社区划分后,如何将结果应用回图库呢?
2. 是给每个节点加一个类似cluster_id的属性吗?(我前几天用python中的igraph和louvain模块,是这么做的)
3. 是否能将节点的社区划分可视化呢?
1和2: 是的,算法结果你需要写回图数据库的话是写到节点属性上的,所以要求tag 有对应的属性名,louvain算法要求属性名是 louvain
3. 你写回图数据库后,可以通过studio进行节点展示,根据你的louvain属性值进行着色
参考这里的回复
老师 您好!我将spark版本改为2.4之后,可以跑通,特别感谢!
我还想问两个问题:
val louvainConfig = LouvainConfig(10, 5, 0.5)
,这三个参数分别指maxIter,internalIter和tol吗?我看了LouvainAlgo.scala中的源码,还是不太明白这三个参数分别代表什么含义呢?为啥你觉得社区编号是连续的呢,
也就是说louvain这一列是指社区编号吧?我之前用python做的时候,结果是下面这样:
我理解0 1 2 3 4 是不同的簇。
那louvain这一列的不同值也是代表不同簇吧?
您能帮我看看这三个参数代表什么意思嘛?
参考这个。
OK 看明白了! 感谢您!
因为算法内部是采用 当前社区内节点的最小id作为该社区的编号,不同社区内最小的节点id通常不连续的
明白了! 谢谢!!
老师您好! 我又有个问题:
我采用提交algorithm算法包的方式跑louvain算法,将application.conf中的data source和data sink都设置为nebula,nebula write中的type改为“update”。
然后运行,发生如下错误:
插入的语句过多了,试试少点小批量插入看看。
目前的数据量是:
这个assert是spark connector在更新数据的时候做的校验,algorithm里面给出的默认batch是1000,这个该应改小一些,我提个pr 你可以用最新的algorithm包
老师 您好 改小之后就解决了吗?如何改小呢?我现在的algorithm是3.0.0的
你可以自己按照这个pr改一下值,然后本地打包。 或者从这里下载 最新时间的jar包Index of /repositories/snapshots/com/vesoft/nebula-algorithm/3.0-SNAPSHOT