2017-11-06 10 views
0

2つのデータフレームにそれぞれ2つのカラムがあります。私は第1列でそれらに参加し、第2列を差し引きたい。これまで私が持っていたことは次のとおりです。スパークスカラ結合データフレーム減算カラム値

var x = df.select("a", "c") 
      .groubBy("a") 
      .count() 
var y = df.select("b", "c") 
      .groubBy("b") 
      .count() 
var z = x.join(y, x("a") === y("b")) 

データフレーム減算を実行するにはどうすればよいですか?データフレームがなければ、私は通常mapValues {case .. => ..}になります。ありがとう

+0

何を差し引きたいですか?どの列? – Will

+0

私は間違いを犯したと思う、基本的に私は "a"と "b"のキーでグループ化し、 "c"で合計したい。 2つのdfsをキーで結合し、 "c"を "z"の.selectに " – ajax2000

答えて

1
val x = df.groubBy("a") 
      .agg(sum("c").as("c1")) 
      .select("a", "c1") 
val y = df.groubBy("b") 
      .agg(sum("c").as("c2")) 
      .select("b", "c2") 
val z = x.join(y, $"a" === $"b") 
     .select($"a", $"c1" - $"c2") 
+0

"を差し引きたいのですが、 "$" a "は$" b "と互換性がありますか?それはただの鍵です。 – ajax2000

+0

@ ajax2000はい。あなたはaとbに加わるので、とにかく等しいはずです – Will

関連する問題