将RDD列表转换为Spark中单个元素的RDD [英] Convert RDD List to RDD of individual element in spark
本文介绍了将RDD列表转换为Spark中单个元素的RDD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个输入rdd( JavaRDD< List< String>>
),我想将其转换为 JavaRDD< String>
作为输出.
输入RDD列表的每个元素应成为输出rdd中的单个元素.
I have a input rdd (JavaRDD<List<String>>
) and i want to convert it to JavaRDD<String>
as output.
Each element of input RDD list should become a individual element in output rdd.
如何在Java中实现它?
how to achieve it in java?
JavaRDD<List<String>> input; //suppose rdd length is 2
input.saveAsTextFile(...)
输出:
[a,b]
[c,d]
[a,b]
[c,d]
我想要什么:
a
b
c
d
a
b
c
d
推荐答案
我使用以下代码段进行了变通:
I did a workaround using below code snippet:
使用分隔符'\ n'
连接列表的每个元素,然后使用标准的spark API保存rdd.
Concat each element of list with separator '\n'
then save rdd using standard spark API.
inputRdd.map(new Function<List<String>, String>() {
@Override
public String call(List<String> scores) throws Exception {
int size = scores.size();
StringBuffer sb = new StringBuffer();
for (int i=0; i <size;i++){
sb.append(scores.get(i));
if(i!=size-1){
sb.append("\n");
}
}
return sb.toString();
}
}).saveAsTextFile("/tmp/data"));
这篇关于将RDD列表转换为Spark中单个元素的RDD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文