【发布时间】:2014-07-30 13:17:46
【问题描述】:
我有一个员工数据集及其休假记录。每条记录(EmployeeRecord 类型)都包含 EmpID(String 类型)和其他字段。我从文件中读取记录,然后转换为 PairRDDFunctions:
val empRecords = sc.textFile(args(0))
....
val empsGroupedByEmpID = this.groupRecordsByEmpID(empRecords)
此时,“empsGroupedByEmpID”的类型为 RDD[String,Iterable[EmployeeRecord]]。我将其转换为 PairRDDFunctions:
val empsAsPairRDD = new PairRDDFunctions[String,Iterable[EmployeeRecord]](empsGroupedByEmpID)
然后,我根据应用程序的逻辑去处理记录。最后,我得到了一个 [Iterable[EmployeeRecord]]
类型的 RDDval finalRecords: RDD[Iterable[EmployeeRecord]] = <result of a few computations and transformation>
当我尝试使用可用的 API 将此 RDD 的内容写入文本文件时:
finalRecords.saveAsTextFile("./path/to/save")
我发现在文件中每条记录都以 ArrayBuffer(...) 开头。我需要的是每行有一个 EmployeeRecord 的文件。那不可能吗?我错过了什么吗?
【问题讨论】:
标签: scala apache-spark