Ich versuche im Wesentlichen zu "subtrahieren" stattdessen mit einem linken äußeren Join.Beim Filtern einer linken Join JavaRDD, kann Abwesend (oder Present) nicht in Optionale Ausnahme
JavaPairRDD<Integer, Integer> allCustomers = ... (customerID, 1)
JavaPairRDD<Integer, Integer> excludedCustomers = ... (customerID, 1)
JavaPairRDD<Integer, Tuple2<Integer, Optional<Integer>>> joinedCustomers = allCustomers.leftOuterJoin(excludedCustomers)
JavaPairRDD<Integer, Tuple2<Integer, Optional<Integer>>> filteredCustomers = joinedCustomers.filter(t -> !t._2._2.isPresent())
Aber ich bekomme die Fehler
java.lang.ClassCastException: com.google.common.base.Present cannot be cast to com.google.common.base.Optional
und
java.lang.ClassCastException: com.google.common.base.Absent cannot be cast to com.google.common.base.Optional
ich andere Abhilfen versucht, wie Mapping erste und/oder .orNull, aber ich immer noch die gleichen Fehler.
JavaPairRDD<Integer, Boolean> joinedCustomersBoolean = joinedCustomers.mapValues(t -> t._2.orNull() == null);
Last, but not least, spark.driver.userClassPathFirst = true
Einstellung löst das Problem nicht.