对于非整数的String类型数据,推荐使用调用算法接口的方式,可以使用SparkSQL的dense_rank函数进行编码,将String类型转换为Long类型。
因为Louvain算法只需要传入边就行了,但是边有src,dst两个id,不知怎样才能用这个转换
这个有没有使用的例子呢,比如说edge_serve.csv, player101 → team204, 应该如何处理成long型的id,
对于非整数的String类型数据,推荐使用调用算法接口的方式,可以使用SparkSQL的dense_rank函数进行编码,将String类型转换为Long类型。
因为Louvain算法只需要传入边就行了,但是边有src,dst两个id,不知怎样才能用这个转换
这个有没有使用的例子呢,比如说edge_serve.csv, player101 → team204, 应该如何处理成long型的id,
歪个楼,我按照编码已经跑好了,
但是这个数据看不懂,只有id和louvain两列,我看过其他帖子说要group by,我试着groupby但是 >1的数据没有,
我这是900w条边数据进去的,返回的结果集是844w个,按道理应该形成了一些社区的。但是这个不是返回的所有点的个数吗
你用的哪个版本的库, 之前的louvain结果输出时是把社区id 给输出出来了,会存在输出量小于点数量的情况的。
可以参考这个帖子https://discuss.nebula-graph.com.cn/t/topic/6082/2
用的是2.5.1的,我看到这个贴子的,所以感觉还是很奇怪
<dependency>
<groupId>com.vesoft</groupId>
<artifactId>nebula-algorithm</artifactId>
<version>2.5.1</version>
</dependency>
2.5.1的源码里面还是
val communities = G.vertices
.map(x => {
Row(x._1, x._2.cId)
})
我看pr里面已经修改了,这
我知道了,要用2.5-SNAPSHOT是吧
是的 master分支中的代码已经更新了, 但有可能你会遇到版本不兼容的问题,目前的SNAPSHOT版本的客户端和2.5.0的nebula服务端是不兼容的。
如果你数据源是hdfs那没问题,如果是nebula,你可能要自己在2.5.1的algorithm分支上修改编译了。
好的,我是HDFS的数据源离线在跑,应该没有问题,我去编个snapshot
你不用编, snapshot版本已经发布了,你可以直接在你的程序中用的。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。