参考这里的回复
老师 您好!我将spark版本改为2.4之后,可以跑通,特别感谢!
我还想问两个问题:
val louvainConfig = LouvainConfig(10, 5, 0.5)
,这三个参数分别指maxIter,internalIter和tol吗?我看了LouvainAlgo.scala中的源码,还是不太明白这三个参数分别代表什么含义呢?- 针对跑出的结果
louvain这一列是指所被划分的社区编号吗?为什么数值不连续呢?
感谢老师解答!
为啥你觉得社区编号是连续的呢,
也就是说louvain这一列是指社区编号吧?我之前用python做的时候,结果是下面这样:
我理解0 1 2 3 4 是不同的簇。
那louvain这一列的不同值也是代表不同簇吧?
您能帮我看看这三个参数代表什么意思嘛?
参考这个。
OK 看明白了! 感谢您!
因为算法内部是采用 当前社区内节点的最小id作为该社区的编号,不同社区内最小的节点id通常不连续的
明白了! 谢谢!!
老师您好! 我又有个问题:
我采用提交algorithm算法包的方式跑louvain算法,将application.conf中的data source和data sink都设置为nebula,nebula write中的type改为“update”。
然后运行,发生如下错误:
这个是怎么回事呢?
插入的语句过多了,试试少点小批量插入看看。
目前的数据量是:
我如果将application.conf配置文件中的nebula-write type 改为“inset”,就不会出现这个错误,但是那样会将其他属性值(比如name,age)变为NULL。
这个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
没有错误啊,你看一下全的日志存到哪里了
老师 我按照您那个pr修改了下值,重新打包了一下,是可以用的。
我在数据中先增加了louvain属性:
然后修改application.conf中nebula.write为update,再执行下面语句:
spark-submit --master "local" --class com.vesoft.nebula.algorithm.Main /opt/offline/nebula/nebula-algorithm-3.0.0.jar -p /opt/offline/nebula/application.conf
跑出的结果中,我发现有些节点的louvain属性仍然是空值,这是因为它不属于任意社区吗?
你space边数据中点的数据量是多少,和你tag player中点的数据量一样吗