我在Spark中有这种DataFrame
+---+--------+-----+
| A| date|value|
+---+--------+-----+
| 1|12/06/15| 0,0|
| 1|17/06/15| 0,0|
| 3|12/06/15| 0,0|
| 3|17/06/15| 0,0|
| 4|12/06/15| 0,0|
| 4|17/06/15| 0,0|
| 1|12/06/15| 0,0|
| 1|17/06/15| 0,0|
| 3|12/06/15| 65,4|
| 3|17/06/15| 40,7|
| 4|12/06/15| 73,1|
| 4|17/06/15| 33,3|
....
+---+--------+-----+
A
值是周期性的:1 -> 3 -> 4 -> 1 -> 3 -> 4 -> ...
我需要做的是添加另一列T
来为我的记录创建唯一键{T, A, date}
:
+---+---+--------+-----+
| T| A| date|value|
+---+---+--------+-----+
| 1| 1|12/06/15| 0,0|
| 1| 1|17/06/15| 0,0|
| 1| 3|12/06/15| 0,0|
| 1| 3|17/06/15| 0,0|
| 1| 4|12/06/15| 0,0|
| 1| 4|17/06/15| 0,0|
| 2| 1|12/06/15| 0,0|
| 2| 1|17/06/15| 0,0|
| 2| 3|12/06/15| 65,4|
| 2| 3|17/06/15| 40,7|
| 2| 4|12/06/15| 73,1|
| 2| 4|17/06/15| 33,3|
........
+---+---+--------+-----+
我看到withColumn
DataFrame方法允许向DF添加其他列,并且可以从当前行的其他元素中计算T
值。我在这里面临的问题是,当且仅当原始DF中已存在具有相同T
值的元素时,我想增加新{A, date}
列的值。
在Spark中执行此操作的最佳方法是什么?