Zach Moshe - 1 year ago 369
Scala Question

# ArrayIndexOutOfBoundsException when accessing triplets of a Graph

I'm playing a bit with GraphX and got stuck with an Exception I can't explain.

My code generates 10 random nodes on a graph (of type

`Point`
) and then connects some of them. The logic itself doesn't really matter (and actually doesn't have any meaning). I just wanted to build a somewhat connected graph and got this Exception. The code goes as follows:

``````import scala.util.Random
case class Point(x:Double, y:Double, z:Double)

val vertices = sc.parallelize(
(1 to 10).map(i => (i.toLong, Point(Random.nextInt(10), Random.nextInt(10), Random.nextInt(10))))
)

val tmpGroups = vertices.map(x => (Random.nextInt(5), x) )
val edges = tmpGroups.cartesian(tmpGroups)
.filter{case(x,y) => x._2._1 != y._2._1}
.filter{case(x,y) => Math.abs(x._1 - y._1) <= 1}
.map{case(x,y) => Edge(x._2._1, y._2._1, 1.)}

val graph = Graph(vertices, edges)
``````

So far everything works, and when I collect
`vertices`
and
`edges`
they look fine:

``````graph.vertices.collect.foreach(println)
=> (4,Point(6.0,7.0,7.0))
(8,Point(6.0,0.0,5.0))
(1,Point(8.0,4.0,7.0))
...

graph.edges.collect.foreach(println)
=> Edge(1,2,1.0)
Edge(2,1,1.0)
Edge(1,3,1.0)
...
``````

Their types are (as expected):

``````org.apache.spark.graphx.VertexRDD[Point]
org.apache.spark.graphx.EdgeRDD[Double]
``````

But when I try to collect
`triplets`
I get the following error:

``````graph.triplets.collect
``````

```
org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 40431.0 failed 1 times, most recent failure: Lost task 2.0 in stage 40431.0 (TID 8029, localhost): java.lang.ArrayIndexOutOfBoundsException
Driver stacktrace:
at org.apache.spark.scheduler.DAGScheduler.org\$apache\$spark\$scheduler\$DAGScheduler\$\$failJobAndIndependentStages(DAGScheduler.scala:1431)
at org.apache.spark.scheduler.DAGScheduler\$\$anonfun\$abortStage\$1.apply(DAGScheduler.scala:1419)
at org.apache.spark.scheduler.DAGScheduler\$\$anonfun\$abortStage\$1.apply(DAGScheduler.scala:1418)
at scala.collection.mutable.ResizableArray\$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1418)
at scala.Option.foreach(Option.scala:236)
at org.apache.spark.util.EventLoop\$\$anon\$1.run(EventLoop.scala:48)
at org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:620)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1832)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1845)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1858)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)
at org.apache.spark.rdd.RDD\$\$anonfun\$collect\$1.apply(RDD.scala:927)
at org.apache.spark.rdd.RDDOperationScope\$.withScope(RDDOperationScope.scala:150)
at org.apache.spark.rdd.RDDOperationScope\$.withScope(RDDOperationScope.scala:111)
at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)
at org.apache.spark.rdd.RDD.collect(RDD.scala:926)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$afab7c86681139df3241c999f2dafc38\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:214)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$afab7c86681139df3241c999f2dafc38\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:219)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$afab7c86681139df3241c999f2dafc38\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:221)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$afab7c86681139df3241c999f2dafc38\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:223)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$afab7c86681139df3241c999f2dafc38\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:225)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:237)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:239)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:241)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:243)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:245)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$b968e173293ba7cd5c79f2d1143fd\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:247)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$17f9c57b34a761248de8af38492ff086\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:249)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$17f9c57b34a761248de8af38492ff086\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:251)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$17f9c57b34a761248de8af38492ff086\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:253)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$17f9c57b34a761248de8af38492ff086\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:255)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$17f9c57b34a761248de8af38492ff086\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:257)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$bec1ee5c9e2e4d5af247761bdfbc3b3\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:259)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$bec1ee5c9e2e4d5af247761bdfbc3b3\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:261)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$bec1ee5c9e2e4d5af247761bdfbc3b3\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:263)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$bec1ee5c9e2e4d5af247761bdfbc3b3\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:265)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$bec1ee5c9e2e4d5af247761bdfbc3b3\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:267)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$5acc5a6ce0af8ab20753597dcc84fc0\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:269)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$5acc5a6ce0af8ab20753597dcc84fc0\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:271)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$5acc5a6ce0af8ab20753597dcc84fc0\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:273)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$5acc5a6ce0af8ab20753597dcc84fc0\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:275)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$5acc5a6ce0af8ab20753597dcc84fc0\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:277)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:279)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:281)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:283)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:285)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:287)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$33d793dde4292884a4720419646f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:289)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$3d99ae6e19b65c7f617b22f29b431fb\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:301)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$3d99ae6e19b65c7f617b22f29b431fb\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:303)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$3d99ae6e19b65c7f617b22f29b431fb\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:305)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$3d99ae6e19b65c7f617b22f29b431fb\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:307)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$3d99ae6e19b65c7f617b22f29b431fb\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:309)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$6e49527b15a75f3b188beeb1837a4f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:321)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$6e49527b15a75f3b188beeb1837a4f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:323)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$6e49527b15a75f3b188beeb1837a4f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:325)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$6e49527b15a75f3b188beeb1837a4f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:327)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$6e49527b15a75f3b188beeb1837a4f1\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:329)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$93297bcd59dca476dd569cf51abed168\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:331)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$93297bcd59dca476dd569cf51abed168\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:333)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$93297bcd59dca476dd569cf51abed168\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:335)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$93297bcd59dca476dd569cf51abed168\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:337)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$\$\$93297bcd59dca476dd569cf51abed168\$\$\$\$\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:339)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:341)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:343)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:345)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:347)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:349)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:351)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:353)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:355)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:357)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:359)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:361)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:363)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:365)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:367)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:369)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:371)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:373)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:375)
at \$iwC\$\$iwC\$\$iwC\$\$iwC\$\$iwC.(:377)
at \$iwC\$\$iwC\$\$iwC\$\$iwC.(:379)
at \$iwC\$\$iwC\$\$iwC.(:381)
at \$iwC\$\$iwC.(:383)
at \$iwC.(:385)
at (:387)
at .(:391)
at .()
at .(:7)
at .()
at \$print()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
at org.apache.zeppelin.spark.SparkInterpreter.interpretInput(SparkInterpreter.java:810)
at org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:753)
at org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:746)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer\$InterpretJob.jobRun(RemoteInterpreterServer.java:341)
at org.apache.zeppelin.scheduler.Job.run(Job.java:176)
at org.apache.zeppelin.scheduler.FIFOScheduler\$1.run(FIFOScheduler.java:139)
Caused by: java.lang.ArrayIndexOutOfBoundsException
```

I can only guess the
`\$iwC`
stuff are the anonymous functions in my code (
`filter`
and
`map`
). I've tried to test them separately and collect with/without some of them and nothing led me to a solution.

What am I missing?

EDIT:

I got it to work, but now it's even weirder...

If I collect and re-parallelize the
`edges`
RDD, it seems to work fine:

``````val graph = Graph(vertices, sc.parallelize(edges.collect))
graph.triplets.collect.foreach(println)
=> ((2,Point(5.0,9.0,0.0)),(3,Point(3.0,7.0,8.0)),1.0)
((2,Point(5.0,9.0,0.0)),(4,Point(2.0,5.0,4.0)),1.0)
((2,Point(5.0,9.0,0.0)),(5,Point(0.0,3.0,3.0)),1.0)
...
``````

Can someone please explain this? I don't like voodoos...

What happens on re-parallelization? I guess partitions may change? Does that have anything to do with the original problem?

Since `tmpGroups` and `edges` aren't cached and are accessed twice, the `map` operation that is used to create them creates random values more than once, ending up with different values each time.
One way to solve this (more elegant usable than collecting and parallelizing again) is caching. By adding `.cache()` at the end of the line that creates `tmpGroups`, the result will be created exactly once:
``````val tmpGroups = vertices.map(x => (Random.nextInt(5), x) ).cache()