2016-04-14 2 views
0

Есть ли способ использовать flatMap выравниваться список в РДУ так:PySpark flatMap в Свести Список в списке

rdd = sc.parallelize([[1,2,3],[6,7,8]]) 

rdd.flatMap(lambda r: [[r[0],r[1],r[2],[r[2]+1,r[2]+2]]]).collect() 

Мой желаемый результат:

[[1,2,3,4,5],[6,7,8,9,10]] 

Фактический выход:

[[1,2,3,[4,5]], [6,7,8,[9,10]]] 

Я понимаю flatMap сглаживает массив надлежащим образом, и я не путать, как к а ctual output выше, но я хотел бы знать, есть ли способ эффективно сгладить внутренний список.

ответ

2

Пожалуйста, измените код, как показано ниже, чтобы получить требуемый выход

rdd.flatMap(lambda r: [[r[0],r[1],r[2],r[2]+1,r[2]+2]]).collect() 
+0

Дело в том, что я не могу изменить его таким образом. У меня есть структура, как указано выше, и я хотел бы сгладить ее, не вызывая понимания списка. –

+0

Если данный ответ не соответствует вашим ожиданиям, можете ли вы отредактировать и улучшить свой вопрос? Не совсем понятно, что вы намерены делать – Mohan

+0

Я хотел бы сгладить список, как он задан в вопросе. Учитывая список, похожий на '[1,2,3, [4,5]]', я хотел бы сгладить его до '[1,2,3,4,5]' с помощью инструментов, доступных в pyspark. –

Смежные вопросы