首页 > 解决方案 > 如何将 rdd 数据保存到本地文件而不是 println

问题描述

我想使用 scala 打印 rdd 数据,如下所示

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

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

标签: scalardd

解决方案


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 带到目标目录,而不仅仅是路径。


推荐阅读