【发布时间】:2016-02-27 16:09:49
【问题描述】:
获取 java.util.NoSuchElementException
val data3 = data2.filter(x => type1_dm_med.contains(x._2._1.last.medicine))
当我尝试 print data3.count 时出现以下错误 - 不知道如何解决它,请帮助
[Stage 50:=====> (20 + 1) / 200]16/02/26 01:37:11 ERROR Executor: Exception in task 22.0 in stage 50.0 (TID 1636)
java.util.NoSuchElementException
at scala.collection.LinearSeqOptimized$class.last(LinearSeqOptimized.scala:135)
at scala.collection.immutable.List.last(List.scala:84)
更多上下文:
class Diagnostic(patientID:String, date: Date, code: String)
class Medication(patientID: String, date: Date, medicine: String)
将 .csv 中的数据加载到药物:RDD[药物] 和诊断:
RDD[诊断]
val mpairs = medication.map(x=>(x.patientID,x))
val dpairs = diagnostic.map(x=>(x.patientID,x))
val data = mpairs.fullOuterJoin(dpairs)
'data' 元组示例: (000496120-01,(一些(药物(000496120-01,Fri Jul 01 15:15:00 EDT 2005,硫酸鱼精蛋白)),一些(诊断(000496120-01,Mon Jan 07 15:00:00 EST 2013,v70) .0))))
type1_dm_dx et'al 是要过滤的代码或药物列表
val cond1 = data.filter(x => type1_dm_dx.contains(x._2._2.last.code))
val data1 = data.subtractByKey(cond1)
val data2 = data1.filter(x => type2_dm_dx.contains(x._2._2.last.code))
val data3 = data2.filter(x => type1_dm_med.contains(x._2._1.last.medicine))
希望对你有帮助
【问题讨论】:
-
除了你的问题,
x._2._1这看起来很可疑,就像不可读的代码/不好的做法。你可以阅读case classes。 -
您需要提供更多上下文以获得更有意义的帮助。我所能收集到的只是它看起来像
x._2._1是一个空的List,因此在它上面调用.last会引发错误。 -
提供更多上下文
标签: scala