【问题标题】:save rdd of array of array to text file spark将数组数组的rdd保存到文本文件spark
【发布时间】:2016-02-23 01:48:54
【问题描述】:

我有一个像这样称为 tmp 的 RDD。

"org.apache.spark.rdd.RDD[(String, List[(String, String, Double)])]" 

值如下所示。

Array[(String, List[(String, String, Double)])] = Array((1076486,List((1076486,1076486,0.0), (1076486,431000,0.7438727490345501), (1076486,351632,3.139055446043724), (1076486,431611,6.173095256463185))), (430067,List((430067,430067,0.0), (430067,1037380,4.0390818750047535), (430067,431611,6.396930255172381), (430067,824889,7.265222659014164))))

我的输出应该是列表的内部内容,如下所示...

1076486,1076486,0.0
1076486,431000,0.7438727490345501
.
.
430067,1037380,4.0390818750047535

我试过这个..

.mapValues(_.toList).saveAsTextFile

它在文件中如下所示。

(1076486,List((1076486,1076486,0.0), (1076486,431000,0.7438727490345501), (1076486,351632,3.139055446043724), (1076486,431611,6.173095256463185)))
(430067,List((430067,430067,0.0), (430067,1037380,4.0390818750047535), (430067,431611,6.396930255172381), (430067,824889,7.265222659014164)))

我可以通过下面的代码打印想要的数据

tmp.collect().foreach(a=> {a.foreach(e=>print(e+" "))})

但无法将其保存到文件中。

我怎样才能得到想要的结果?

【问题讨论】:

    标签: arrays list scala apache-spark rdd


    【解决方案1】:

    只需手动创建输出字符串:

    tmp.values.flatMap(_.map{case (x, y, z) => s"$x,$y,$z"})
    

    【讨论】:

    • 感谢 zero323。你摇滚!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多