我有一个巨大的数据集,大约有20列。我在pyspark和RDD合作,需要做一些类似的事情
rdd.map(lambda x: (x[9], x[:] - x[9]))
基本上。创建一个ley值对,使其中一列是键,其余的是值。我无法用一种有意义的方式来切割它。
我试过了
rdd.map(lambda x: (x[9], x[:] - x[9]))
rdd.map(lambda x: (x[9], x[:8] + x[10:]))
rdd.map(lambda x: (x[9], list(x[:8].append(x[10:]))))
似乎都没用。我不确定该怎么做
3条答案
按热度按时间uemypmqf1#
我会把问题分解成几个步骤。
接下来我们需要一个从元组中弹出一个值并使其成为键的函数。
下一步我们在
map
```rdd.map(lambda x: key_elem_to_rest(0, x)).collect() # index = 0
[{1: (2, 3, 4, 5, 6, 7, 8, 9, 10)}]
rdd.map(lambda x: key_elem_to_rest(5, x)).collect() # index = 5
[{6: (1, 2, 3, 4, 5, 7, 8, 9, 10)}]
wfauudbj2#
您可以尝试使用以下方法:
这是在检查x[9]是否不是一个键,它将它作为一个键,而rest作为值。
doinxwow3#
我终于自己弄明白了。