The app works fine in single thread, but when I try to test multithreading, it throws the following NullPointer exception:
java.lang.NullPointerException
at scala.collection.JavaConversions$JListWrapper.length(JavaConversions.scala:616)
at scala.collection.SeqLike$class.size(SeqLike.scala:100)
at scala.collection.JavaConversions$JListWrapper.size(JavaConversions.scala:615)
at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:233)
at scala.collection.JavaConversions$JListWrapper.toArray(JavaConversions.scala:615)
at spark.ParallelCollection$.slice(ParallelCollection.scala:86)
at spark.ParallelCollection.<init>(ParallelCollection.scala:35)
at spark.SparkContext.parallelize(SparkContext.scala:195)
at spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:68)
at spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:73)
at com.gdv.spark.tagcloud.TagCloudJob.runJob(TagCloudJob.java:52)
at com.gdv.spark.tagcloud.TagCloudJob.runJob(TagCloudJob.java:34)
at com.gdv.spark.tagcloud.TagCloudJobExecutor.execute(TagCloudJobExecutor.java:38)
at com.gdv.spark.tagcloud.TagCloudJobExecutor.execute(TagCloudJobExecutor.java:18)
at com.gdv.spark.tagcloud.TagCloudJobExecutor$ThreadTester.run(TagCloudJobExecutor.java:83)
at java.lang.Thread.run(Thread.java:679)
java.lang.NullPointerException
at scala.collection.JavaConversions$JListWrapper.length(JavaConversions.scala:616)
at scala.collection.SeqLike$class.size(SeqLike.scala:100)
at scala.collection.JavaConversions$JListWrapper.size(JavaConversions.scala:615)
at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:233)
at scala.collection.JavaConversions$JListWrapper.toArray(JavaConversions.scala:615)
at spark.ParallelCollection$.slice(ParallelCollection.scala:86)
at spark.ParallelCollection.<init>(ParallelCollection.scala:35)
at spark.SparkContext.parallelize(SparkContext.scala:195)
at spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:68)
at spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:73)
at com.gdv.spark.tagcloud.TagCloudJob.runJob(TagCloudJob.java:52)
at com.gdv.spark.tagcloud.TagCloudJob.runJob(TagCloudJob.java:34)
at com.gdv.spark.tagcloud.TagCloudJobExecutor.execute(TagCloudJobExecutor.java:38)
at com.gdv.spark.tagcloud.TagCloudJobExecutor.execute(TagCloudJobExecutor.java:18)
at com.gdv.spark.tagcloud.TagCloudJobExecutor$ThreadTester.run(TagCloudJobExecutor.java:83)
at java.lang.Thread.run(Thread.java:679)
I created a separate JavaSparkContext and a list of Strings for each thread.