如何将rdd数据保存到本地文件而不是println

时间:2018-06-08 07:19:35

标签: scala rdd

我想使用scala(如下面的

)打印rdd数据
res1.foreach{case(userid,tags)=>println(s"${userid}${"\t"}${tags.topicInterests.map(_.id).mkString(",")}")}

现在,我想将细节保存到本地文件而不是println,我该如何实现呢?

1 个答案:

答案 0 :(得分:0)

使用RDD的saveAsTextFile()方法,如下所示:

val strRdd = res1.map{case(userid,tags)=>(s"${userid}${"\t"}${tags.topicInterests.map(_.id).mkString(",")}")}
strRdd.saveAsTextFile("/home/test_user/result")

请注意,saveAsTextFile方法采用路径(绝对或相对)到文件夹/目录而不是文件。 RDD数据将作为部分文件写入给定目录中。在这种情况下,将创建一个名为result的目录,其中包含部分文件。

strRdd中的分区数量与部分文件数量相同。如果路径/home/test_user/result已存在,则代码将失败。因此,您只能使用不存在的目录。

奖励信息:同样的saveAsTextFile方法也适用于其他文件系统,如HDFS,S3等,方法是将URL带到目标目录而不仅仅是路径。

相关问题