问题描述
假定我使用GraphFrames来构造有向权重为正实数的有向图g
。然后,我想在考虑边缘权重的情况下计算PageRank。我看不出如何通过查看graphframes.GraphFrame.pageRank
的{{3}}来实现。调用results = g.pageRank(resetProbability=0.15,maxIter=10)
将计算PageRank,但据我所知假定边缘权重为1。我说得对吗?
将此结果与networkx.algorithms.link_analysis.pagerank_alg.pagerank
进行比较,它可以计算具有边权重的有向图上的PageRank,请参见documentation。
感谢您的阅读和帮助。
解决方法
我认为我们可以先“扁平化”数据。
val df = Seq((1,2,3),(2,3,4),(3,4,1)).toDF("src","dst","weight")
val getArray = udf[Seq[Int],Int] {x => (1 to x).toList.toSeq}
val flatDf = df \
.withColumn("dummy1",getArray(col("weight"))) \
.withColumn("dummy2",explode(col("dummy1"))).select("src","dst")