scala - 如何将 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 带到目标目录,而不仅仅是路径。
推荐阅读
- google-bigquery - 解码 GoogleApi BigQuery 对象 - 长生不老药
- spring-boot - 无法使用 MicroMeter 而不是 Prometheus
- arrays - mongodb - 如果数组中的元素之一与查询匹配,则忽略文档
- flutter - Flutter:如何更改 AlertDialog 的宽度?
- javascript - 我想将画布放入我的 pdf。但找不到这样做的方法。实际输出与预期不同
- json - SharePoint 列表/行格式
- gradle - 如何从 gradle 脚本设置路径并将文件夹标记为根生成的源(Intellij IDE)?
- ios - iOS (Swift):使用 DispatchQueue.main.asyncAfter 制作充满活力的按钮 Flash
- c# - 我应该更喜欢并发集合而不是每个线程的传统集合吗?
- ethereum - Solidity 应付功能支付