NullPointerException en Scala Étincelle, semble être causé type de collection?

sessionIdList est de type :

scala> sessionIdList
res19: org.apache.spark.rdd.RDD[String] = MappedRDD[17] au distinctes à :30

Lorsque j'essaie d'exécuter le code ci-dessous :

val x = sc.parallelize(List(1,2,3)) 
val cartesianComp = x.cartesian(x).map(x => (x))

val kDistanceNeighbourhood = sessionIdList.map(s => {
    cartesianComp.filter(v => v != null)
})

kDistanceNeighbourhood.take(1)

- Je recevoir exception :

14/05/21 16:20:46 ERROR Executor: Exception in task ID 80
java.lang.NullPointerException
        at org.apache.spark.rdd.RDD.filter(RDD.scala:261)
        at $line94.$read$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:38)
        at $line94.$read$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:36)
        at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
        at scala.collection.Iterator$$anon$10.next(Iterator.scala:312)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)

Cependant, si j'utilise :

val l = sc.parallelize(List("1","2")) 
val kDistanceNeighbourhood = l.map(s => {    
    cartesianComp.filter(v => v != null)
})

kDistanceNeighbourhood.take(1)

Alors aucune exception n'est affiché

La différence entre les deux fragments de code, c'est que dans le premier extrait sessionIdList est de type :

res19: org.apache.spark.rdd.RDD[String] = MappedRDD[17] at distinct at <console>:30

et dans le deuxième extrait de "l" est de type

scala> l
res13: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[32] at parallelize at <console>:12

Pourquoi est-ce une erreur survenant ?

Dois-je convertir sessionIdList à ParallelCollectionRDD afin de résoudre ce problème ?

  • Pouvez-vous faire de votre code autonome?
  • tout le code, à l'exception d'un peuplées ParallelCollectionRDD est inclus afin de recréer l'exception. Je ne sais pas comment créer un peuplées ParallelCollectionRDD
InformationsquelleAutor blue-sky | 2014-05-21