私はRDDを持っていて、それをループしたいです。私はこれが好きです:
pointsMap.foreach({ p =>
val pointsWithCoordinatesWithDistance = pointsMap.leftOuterJoin(xCoordinatesWithDistance)
pointsWithCoordinatesWithDistance.foreach(println)
println("---")
})
ただし、NullPointerException が発生しています。
java.lang.NullPointerException
at org.apache.spark.rdd.RDD.<init>(RDD.scala:125)
at org.apache.spark.rdd.CoGroupedRDD.<init>(CoGroupedRDD.scala:69)
at org.apache.spark.rdd.PairRDDFunctions.cogroup(PairRDDFunctions.scala:651)
at org.apache.spark.rdd.PairRDDFunctions.leftOuterJoin(PairRDDFunctions.scala:483)
at org.apache.spark.rdd.PairRDDFunctions.leftOuterJoin(PairRDDFunctions.scala:555)
...
pointsMap
との両方xCoordinatesWithDistance
が foreach の前に初期化され、要素が含まれています。foreach ループ内でなくてleftOuterJoin
も機能します。私のコードの完全なバージョンについては、 https://github.com/timasjov/spark-learning/blob/master/src/DBSCAN.scalaを参照してください。