【问题标题】:Groupby and Subtract Spark ScalaGroupby 和减去 Spark Scala
【发布时间】:2020-02-18 04:46:45
【问题描述】:

我有一个如下的数据框:

group value
B      2
B      3
A      5
A      6

现在我需要根据组减去行。即 2-3 和 5-6。改造后应该是这个样子。

group value
B      -1
A      -1

我尝试了下面的代码,但无法解决我的问题。

val df2 = df1.groupBy("Group").agg(first("Value")-second(col("Value")))

【问题讨论】:

  • 你怎么知道什么是第一价值?如果有超过 2 个值怎么办?
  • 使用 spark,永远记住只使用关联函数。在上述情况下,(5-6) 与 (6-5) 不同。
  • 我们之前执行了一些转换,所以我们将知道我们的第一个值是什么

标签: scala apache-spark apache-spark-sql


【解决方案1】:
import org.apache.spark.sql.expressions.Window

val df2 = df1.select("group", "value", $"value" - lead("value").over(Window.partitionBy("group").orderBy("value")))

我猜你想用顺序减去两个相邻的值。

【讨论】:

    【解决方案2】:

    这对我有用。

    val df2 = df1.groupBy("Group").agg(first("Value").minus(last(col("Value"))))
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      相关资源
      最近更新 更多