Как разделить RDD по столбцам на список RDD в Python

Допустим, у нас есть этот RDD:

RDDs = sc.parallelize([["panda", 0], ["pink", 3]])

Поскольку RDD теперь имеют два столбца, нужно получить два RDD, например:

RDDList[0] = (["panda"], ["pink"])
RDDList[1] = ([0], [3])

Не удалось найти обсуждение по этой теме раньше, возможно ли это?

2 ответа

Решение

Это основано на ответе @Ramesh Maharjan, чтобы заставить его работать для любого RDD (python 3.x)

RDDList = []
for i in range(0,len(RDDs.first())):
    RDDList.append(RDDs.map(lambda x: [x[i]]).collect())

print (RDDList[0])
print (RDDList[1])

Ожидаемый результат:

[['panda'], ['pink']]
[[0], [3]]

Вы можете сделать следующее

RDDs = sc.parallelize([["panda", 0], ["pink", 3]])

cols = [0, 1]
RDDList = [(RDDs.map(lambda x: [x[col]]).collect()) for col in cols]

который должен дать вам

print RDDList[0]
#[['panda'], ['pink']]

print RDDList[1]
#[[0], [3]]

Я надеюсь, что ответ полезен

Другие вопросы по тегам