我有一个对象的rdd“labresults”:
case class LabResult(patientID: String, date: Long, labName: String, value: String)
我想转换这个rdd,使得每个patientid和labname组合只包含一行。这一行应该是patientid和labname组合的最新一行(我只对患者进行此实验室的最新日期感兴趣)。我是这样做的:
//group rows by patient and lab and take only the last one
val cleanLab = labResults.groupBy(x => (x.patientID, x.labName)).map(_._2).map { events =>
val latest_date = events.maxBy(_.date)
val lab = events.filter(x=> x.date == latest_date)
lab.take(1)
}
我想从这个rdd创建边:
val edgePatientLab: RDD[Edge[EdgeProperty]] = cleanLab
.map({ lab =>
Edge(lab.patientID.toLong, lab2VertexId(lab.labName), PatientLabEdgeProperty(lab).asInstanceOf[EdgeProperty])
})
我得到一个错误:
value patientID is not a member of Iterable[edu.gatech.cse6250.model.LabResult]
[error]edge(lab.patientid.tolong,lab2vertexid(lab.labname),patientlabedgeproperty(lab.asinstanceof[edgeproperty])[error]^[error]/hw4/stu code/src/main/scala/edu/gatech/cse6250/graphconstruct/graphloader。scala:94:53:value labname不是iterable[edu.gatech.cse6250.model.labresult][error]edge(lab.patientid.tolong,lab2vertexid(lab.labname),patientlabedgeproperty(lab).asinstanceof[edgeproperty])[error]^[error]/hw4/stu code/src/main/scala/edu/gatech/cse6250/graphconstruct/graphloader。scala:94:86:类型不匹配[错误]找到:iterable[edu.gatech.cse6250.model.labresult][error]必需:edu.gatech.cse6250.model.labresult[error]edge(lab.patientid.tolong,lab2vertexid(lab.labname),patientlabedgeproperty(lab).asinstanceof[edgeproperty])
所以,问题似乎是“cleanlab”不是我预期的labresult的rdd,而是iterable的rdd[edu.gatech.cse6250.model.labresult]
我怎么能修好它?
1条答案
按热度按时间nlejzf6q1#
这是我第一部分的方法。关于edge和其他课程的东西我帮不上忙,因为我不知道它们是从哪里来的(是从这里来的吗?)