2017-03-29 42 views
-2

我使用unionAll將源DF(具有負權重)和目標DF(具有正權重)組合到節點DF中。然後我執行groupby來總結相同節點的所有權重,但我不知道爲什麼groupby根本不適用於聯合DF。沒有人面臨同樣的問題:?Spark Dataframe Scala:groupby在UnionAll後不起作用

val src = file.map(_.split("\t")).map(p => node(p(0), (0-p(2).trim.toInt))).toDF() 
val target = file.map(_.split("\t")).map(p => node(p(1), p(2).trim.toInt)).toDF() 

val srcfl = src.filter(src("weight") != -1) 
val targetfl = target.filter(target("weight") != 1) 

val nodes = srcfl.unionAll(targetfl) 

nodes.groupBy("name").sum() 

nodes.map(x => x.mkString("\t")).saveAsTextFile("hdfs://localhost:8020" + args(1)) 
+1

plaase份額數據。例如,你的代碼是不可重複的。 – mtoto

回答

2

你根本無視groupBy操作的結果:就像所有數據幀的轉換,.groupBy(...).sum()發生變異原始數據框(nodes),它產生新的一個。我懷疑,如果你實際使用的返回值從sum()你會看到你正在尋找的結果:

val result = nodes.groupBy("name").sum() 

result.map(x => x.mkString("\t")).saveAsTextFile("hdfs://localhost:8020" + args(1))