【问题标题】:Saving The RDD pair in particular format in the output file将 RDD 对以特定格式保存在输出文件中
【发布时间】:2017-07-30 10:24:00
【问题描述】:

我有一个 JavaPairRDD 可以说数据类型

<Integer,List<Integer>>

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

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

等等……

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

1 1,2,3,4

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

任何帮助将不胜感激

【问题讨论】:

    标签: apache-spark apache-spark-2.0


    【解决方案1】:

    您需要了解这里发生了什么。您有一个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 使用一些分隔符连接一个集合。

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

    【讨论】:

    • 谢谢我会这样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2013-07-27
    相关资源
    最近更新 更多