2016-06-29 2 views
0

У меня есть RDD строк, как показано нижеTransform РДУ из п элементов в РДУ из одного элемента

val rdd1: RDD[String] = RDD("a","b","c","d") 

Я хочу, чтобы объединить элементы выше РДУ и превратить его в РДУ из одного элемента, как ниже

RDD("a,b,c,d") 

Каков наилучший способ сделать это?

+0

Вы действительно хотите «RDD» одного элемента? Какова ценность использования коллекции _distributed_, если она содержит только один элемент? Если нет, и вас просто интересует эта единственная запись, вы можете вызвать 'rdd1.collect(). MkString (", ")' –

+0

Я хотел сохранить результат в HDFS, используя метод rdd saveAsTextFile. Вот почему я хотел преобразовать его в другой RDD. – yAsH

+0

@raHul Тогда не нужно делать этого. Если вы просто раздавите все данные в однозначный RDD, как уже упоминалось, нет смысла использовать распределенную структуру обработки. 'saveAsTextFile' позаботится об этом и распространяет ваши результаты на HDFS. –

ответ

4

Используйте glom функцию:

val res: RDD[Array[String]] = RDD("a","b","c","d").glom 
// > res = RDD(Array("a", "b", "c", "d")) 

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

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