我收到错误java.lang.IndexOutOfBoundsException: 5
,但是我仔细检查了代码,根据我的理解,一切都是正确的。所以,我无法弄清楚如何解决这个问题。
我有RDD[(String,Map[String,List[Product with Serializable]])]
,例如:
(1566,Map(data1 -> List(List(1469785000, 111, 1, 3, null, 0),List(1469785022, 111, 1, 3, null, 1)), data2 -> List((4,88,1469775603,1,3370,f,537490800,661.09)))
我想创建一个新的RDD,它将汇总data1
中子列表的第5个元素的值:
Map(id -> 1566, type -> List(0,1))
我写了以下代码:
val newRDD = currentRDD.map({
line => Map(("id",line._1),
("type",line._2.get("data1").get.map(_.productElement(5))
)
})
如果我放_.productElement(0)
,则结果为Map(id -> 1566, type -> List(1469785000,1469785022))
。所以,我绝对误解为什么可以访问第0个字段,而第3个,第4个,第5个字段引起IndexOutOfBoundsException
。
答案 0 :(得分:0)
问题是由于List[Product with Serializable]
,而我实际上是以List[List[Any]]
处理的。我将初始RDD更改为RDD[(String,Map[String,List[List[Any]]])]
,现在一切正常。