scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.lang.Double
这个问题,一般是在sparksql中做row转换时候出错,这个时候最好一步步debug,或者是log出来相应的类型,光靠猜测有点难以理解.
这里要强调的是,row:Row是先做了一次强制类型转换(asInstanceOf),row的实际类型是Seq[Double],但是不能用Array[Double],否则就会出现各种scala和java的类型转换不匹配的问题. 其他类似情况参考处理
pfl_df.rdd.flatMap(rows => {
// logger.warn("======rows "+rows)
val p05 = (rows(0).asInstanceOf[Seq[Double] ](0) *100).toInt
val p95 = (rows(0).asInstanceOf[Seq[Double] ](1) *100 ).toInt
// logger.warn("======p05 "+p05 )
// logger.warn("======p95 "+p95 )
val list = new Array[Tuple2[String,Integer]](p95 -p05+1)
for (i <- 0 until list.length){
list(i) = (i+"", p05 + i)
}
list
})
val map = yugu_pfl_ix.collect().toMap