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



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

最新更新