【发布时间】:2018-08-17 12:20:47
【问题描述】:
假设我有一个如下所示的数据集:
+--------------------+---------+------+--------------------+
| transID|principal|subSeq| subTransID|
+--------------------+---------+------+--------------------+
|2116e07b-14ea-476...| bob| 4|ec463751-22ca-477...|
|3859a175-f16b-4fd...| bob| 4|ec463751-22ca-477...|
|3859a175-f16b-4fd...| bob| 7|2116e07b-14ea-476...|
+--------------------+---------+------+--------------------+
我想通过基于subSeq 列的最大值聚合列transID 来删除重复行,但我希望结果数据集不显示max(subSeq) 列,而是显示subTransID 列来自原始数据集。
如果我这样做:
dsJoin.groupBy("transID").agg(functions.max("subSeq")).show();
然后我得到
+--------------------+-----------+
| transID|max(subSeq)|
+--------------------+-----------+
|3859a175-f16b-4fd...| 7|
|2116e07b-14ea-476...| 4|
+--------------------+-----------+
已根据另一行中的最大值 7 正确删除了 subSeq 列中值为 4 的重复行 3859a175-f16b-4fd...。但我希望在结果数据集中显示subTransID 列!
我一定遗漏了一些非常明显的东西。
在 JAVA 中执行此操作。感谢您的任何建议!
【问题讨论】:
标签: apache-spark apache-spark-sql