отображение scala / spark [String, List [String]] в пары строк

У меня есть RDD со структурами RDD:[String A,List(Strings Bs)]. Я хотел бы сопоставить его так, чтобы я получил RDD:[String A,String B], чтобы каждый элемент в списке совпадал со строкой A. Что было бы наиболее эффективным способом сделать это?

В настоящее время я использую flatMapValues, будет ли это наиболее эффективным способом? (У меня огромный набор данных)


person GameOfThrows    schedule 23.04.2015    source источник
comment
Похоже, вы используете Java API. Укажите, какой API вы используете.   -  person sarveshseri    schedule 23.04.2015
comment
И да ... flatMapValues ​​- один из лучших способов для этого.   -  person sarveshseri    schedule 23.04.2015
comment
Помимо flatMapValues, получили ли вы этот RDD, например, от совместной группы? Если да, то использование соединения вместо этого даст то, что вы хотите, без этого промежуточного RDD.   -  person Daniel Langdon    schedule 23.04.2015


Ответы (1)


rdd.flatMapValues(identity) должен выполнить свою работу.

Это должен быть довольно эффективный и простой способ. Чтобы оптимизировать производительность, вы можете сравнить его с реализацией, использующей mapPartitions, и выбрать лучшее из двух. Я бы не ожидал огромной разницы, поскольку в обоих случаях объекты-оболочки все равно нужно создавать.

rdd.mapPartitions(iter => iter.flatMap(elem => elem._2.map(v => (elem._1,v)))
person maasg    schedule 23.04.2015