将RDD列表转换为Spark中单个元素的RDD [英] Convert RDD List to RDD of individual element in spark

查看:92
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆