我想使用scala(如下面的
)打印rdd数据res1.foreach{case(userid,tags)=>println(s"${userid}${"\t"}${tags.topicInterests.map(_.id).mkString(",")}")}
现在,我想将细节保存到本地文件而不是println,我该如何实现呢?
答案 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带到目标目录而不仅仅是路径。