恢复将rdd分组的元素

时间:2018-08-16 08:56:34

标签: apache-spark pyspark rdd

我有这样的代码:

rdd2 = rdd1.groupByKey().flatMap(lambda userList: process_full(list(userList[1])))

def process_full(given_list):
    num_times = len(given_list)
    new_list = []
    for i in range(1,num_times):
        new_list.append((given_list[i][1] - given_list[i-1][1],
                         given_list[i][2] , given_list[i][3], **user_id**))
    return new_list

其中rdd1包含user_id作为密钥。现在,在process_full函数内部,我将创建一个列表,其中包含rdd1中的许多其他元素(来自不同的列)。我想将我分组的user_id附加到在process_full中创建的列表中。

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

对数据框进行分组的键位于userList[0]变量中。您可以简单地将其添加为process_full方法的输入:

def process_full(key, given_list):
    // Same as before but add the key to new_list

以及lambda函数中:

rdd2 = rdd1.groupByKey().flatMap(lambda userList: process_full(userList[0], list(userList[1])))