我有一个数据集,在使用 scala 中的 Spark SQL(1.6.2)进行一些转换后,我得到了以下数据。 (部分数据)。
home
现在我想得到最终结果,比如聚合类似的away
和home
,即a和b出现两次。类似的away
和home away count
a b 160
c d 50
e f 75
可能并不总是连续的行
$value = p * abs(log(0.15 * (m - 2)));
有人可以帮我解决这个问题。
答案 0 :(得分:2)
您可以使用array
和sort_array
创建一个临时列,您可以使用groupBy
来解决此问题。在这里,我假设在home
/ away
列中最多可以有两行具有相同的值,而home
中的值与away
中的值不一致&# 39;重要的是:
val df = Seq(("a", "b", 90),
("b", "a", 70),
("c", "d", 50),
("e", "f", 45),
("f", "e", 30)).toDF("home", "away", "count")
val df2 = df.withColumn("home_away", sort_array(array($"home", $"away")))
.groupBy("home_away")
.agg(sum("count").as("count"))
.select($"home_away"(0).as("home"), $"home_away"(1).as("away"), $"count")
.drop("home_away")
会给:
+----+----+-----+
|home|away|count|
+----+----+-----+
| e| f| 75|
| c| d| 50|
| a| b| 160|
+----+----+-----+