我有一个看起来像这样的数据框: partitionCol orderCol valueCol
+--------------+----------+----------+
| partitionCol | orderCol | valueCol |
+--------------+----------+----------+
| A | 1 | 201 |
| A | 2 | 645 |
| A | 3 | 302 |
| B | 1 | 335 |
| B | 2 | 834 |
+--------------+----------+----------+
我想按partitionCol分组,然后在每个分区内对行进行迭代(按orderCol排序),并应用一些函数基于valueCol和缓存的值来计算新列。 例如
def foo(col_value, cached_value):
tmp = <some value based on a condition between col_value and cached_value>
<update the cached_value using some logic>
return tmp
我知道我需要对partitionCol进行分组,并应用将分别在每个chink上运行的UDF,但是努力寻找一种很好的方法来迭代行并应用我描述的逻辑,以获得所需的输出:>
+--------------+----------+----------+---------------+
| partitionCol | orderCol | valueCol | calculatedCol -
+--------------+----------+----------+---------------+
| A | 1 | 201 | C1 |
| A | 2 | 645 | C1 |
| A | 3 | 302 | C2 |
| B | 1 | 335 | C1 |
| B | 2 | 834 | C2 |
+--------------+----------+----------+---------------+
答案 0 :(得分:0)
我认为您最好的方法是对整个数据集应用UDF:
I
love
sending
e-mail
lol
但是我不知道您想做什么,这就是我所能提供的。