Вычисление PageRank на орграфе с весами ребер с использованием GraphFrames

Предположим, я использую GraphFrames для построения орграфа g с весами ребер из положительные действительные числа. Затем я хотел бы вычислить PageRank с учетом весов ребер. Я не понимаю, как этого можно добиться, посмотрев ссылку документация для graphframes.GraphFrame.pageRank. Вызов results = g.pageRank(resetProbability=0.15, maxIter=10) будет вычислять PageRank, но предполагая, что веса ребер равны 1, насколько я могу судить. Я прав?

Сравните это с networkx.algorithms.link_analysis.pagerank_alg.pagerank, который позволяет вычислять PageRank на орграфе с весами ребер, см. документация.

Спасибо за чтение и любая помощь приветствуется.


person NahsiN    schedule 22.09.2020    source источник


Ответы (1)


Я думаю, что, вероятно, мы можем сначала «сгладить» данные.

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")
person wahyudierwin    schedule 21.12.2020