Как выровнять элементы в списке списков, используя Pyspark? - PullRequest
0 голосов
/ 13 октября 2019
I/p: l=[[1,2,3],[3,4]]

O/p: [[1,4,9],[9,16]]

Как я могу достичь выше, используя PySpark?

Я пытался

sc.parallelize(l).flatmap(lambda x:x).map(lambda x: x*x).collect ()

И получил ниже вывод

[1,4,9,9,16]

Но мне нужен вывод, какэто

O/p: [[1,4,9],[9,16]]

Ответы [ 2 ]

3 голосов
/ 13 октября 2019

вы используете flatMap и теряете информацию о каждом наборе, вы должны перебирать каждый список на карте

>>> rdd.map(lambda x: [i * i for i in x]).collect()
[[1, 4, 9], [9, 16]]
0 голосов
/ 14 октября 2019

Вы можете создать небольшую функцию, которая делает квадрат и вызывать его на карте

def square_it(num):
    return [i*i for i in num]

squares = rdd.map(square_it)
result = squares.collect()
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...