Scalaの素人が苦戦中に見つけたScalaの癖(?)
”D@ 6ef3e973”のような謎のObjectが生成されて
java.lang.ClassCastException: [D cannot be cast to scala.collection.Seqが発生する。
原因は分からないが、Tuple[Double]=Tuple[ (1.1), (1.2),(1.3),(2.4) ]の状態から直接Mapを作るとこうなる。
参考にIntだと”D”→"I"になる。
以下のような場合発生する。
val rdd = ( "test", (key -> ts.map(_._2).toSeq) )
のようにするとWrappedArray(1.1, 1.2, 1.3, 2.4)のようになりArrayの中にDouble Objectが入れる。
とりあえずここまで
”D@ 6ef3e973”のような謎のObjectが生成されて
java.lang.ClassCastException: [D cannot be cast to scala.collection.Seqが発生する。
原因は分からないが、Tuple[Double]=Tuple[ (1.1), (1.2),(1.3),(2.4) ]の状態から直接Mapを作るとこうなる。
参考にIntだと”D”→"I"になる。
以下のような場合発生する。
scala> val key = "key"解決は
val ts = Array ( (3, 1.3 ), (2,1.2),(1, 1.1), (4, 2.4) )
scala.util.Sorting.stableSort(ts, (e1: (Int, Double), e2: (Int, Double) ) => e1._1 < e2._1)
val rdd = ( "test", (key -> ts.map(_._2)) )
rdd match {
case (key, ts: Map[String, Seq[Double]]) => {
println(key)
ts.map( x => println(x._1 + "/" + x._2))
}
}
val rdd = ( "test", (key -> ts.map(_._2).toSeq) )
のようにするとWrappedArray(1.1, 1.2, 1.3, 2.4)のようになりArrayの中にDouble Objectが入れる。
とりあえずここまで
0 件のコメント:
コメントを投稿