在输出文件中以特定格式保存 RDD 对

Saving The RDD pair in particular format in the output file

我有一个 JavaPairRDD 让我们说

类型的数据
<Integer,List<Integer>>

当我做 data.saveAsTextFile("output") 输出将包含以下格式的数据:

(1,[1,2,3,4])

等...

我希望在输出文件中有这样的内容:

1 1,2,3,4

i.e. 1\t1,2,3,4

任何帮助将不胜感激

你需要了解这里发生的事情。你有一个 RDD[T,U],其中 T 和 U 是一些 obj 类型,将其读作 T 和 U 元组的 RDD。在这个 RDD 上,当你调用 saveAsTextFile() 时,它实际上将 RDD 的每个元素转换为字符串,因此生成文本文件作为输出。

现在,如何将某种类型 T 的对象转换为字符串?通过在其上调用 toString() 。这就是为什么 [] 代表列表,而 () 代表整个元组的原因。

解决方案,根据您的格式将 RDD 中的每个元素映射到一个字符串。我不太熟悉 Java 语法,但对于 Scala,我会做类似

的事情
rdd.map(e=>s"${e._1}\t${e._2.mkString(",")}")

其中 mkString 使用一些定界符连接集合。

如果有帮助请告诉我。干杯。