迭代pyspark数据框行并应用UDF

时间:2019-06-25 08:44:20

标签: python pyspark

我有一个看起来像这样的数据框: 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            |
+--------------+----------+----------+---------------+

1 个答案:

答案 0 :(得分:0)

我认为您最好的方法是对整个数据集应用UDF:

I
love
sending
e-mail
lol

但是我不知道您想做什么,这就是我所能提供的。