J'ai 2 jeux de données avec moi comme montré ci-dessous. J'essaie de savoir combien de produits sont associés à chaque jeu. Fondamentalement, j'essaie de garder un compte du nombre de produits associés.Spark Dataset - NullPointerException en faisant un filtre sur l'ensemble de données
scala> df1.show()
gameid | games | users | cnt_assoc_prod
-------------------------------------------
1 | cricket |[111, 121] |
2 | basketball|[211] |
3 | skating |[101, 100, 98] |
scala> df2.show()
user | products
----------------------
98 | "shampoo"
100 | "soap"
101 | "shampoo"
111 | "shoes"
121 | "honey"
211 | "shoes"
Je suis en train de parcourir à travers chacun des utilisateurs de DF1 du tableau et trouver la ligne correspondante dans DF2 en appliquant le filtre sur la colonne correspondant à l'utilisateur.
df1.map{x => {
var assoc_products = new Set()
x.users.foreach(y => assoc_products + df2.filter(z => z.user == y).first().
products)
x.cnt_assoc_prod = assoc_products.size
}
Tout en application du filtre on me suit Exception
java.lang.NullPointerException
at org.apache.spark.sql.Dataset.logicalPlan(Dataset.scala:784)
at org.apache.spark.sql.Dataset.mapPartitions(Dataset.scala:344)
at org.apache.spark.sql.Dataset.filter(Dataset.scala:307)
J'utilise la version 1.6.1 d'allumage.
j'ai appris qu'il ya des problèmes en attente si l'on tente d'accéder à un RDD dans les un autre de ce [lien] (https://stackoverflow.com/a/34660825/3213772). Btw, la solution ci-dessus a fonctionné pour moi. Merci!! – puru