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