我正在将Java与Spark结合使用。我需要通过组合两个单独的数据集来创建Tuple2数据集。我正在使用joinWith,因为我希望单个对象保持完整(不能使用join)。但是,此操作失败:
线程“ main”中的异常java.lang.UnsupportedOperationException:无法评估表达式:NamePlaceholder
我在有和没有Alias的情况下都尝试过,但是仍然遇到相同的错误。我在做什么错了?
Dataset<MyObject1> dsOfMyObject1;
Dataset<MyObject2> dsOfMyObject2;
Dataset<Tuple2<MyObject1, MyObject2>> tuple2Dataset =
dsOfMyObject1.as("A").
joinWith(dsOfMyObject2.as("B"),col("A.keyfield")
.equalTo(col("B.keyfield")));
线程“主”中的异常java.lang.UnsupportedOperationException:无法求值 表达式:NamePlaceholder 在org.apache.spark.sql.catalyst.expressions.Unevaluable $ class.eval(Expression.scala:255) 在org.apache.spark.sql.catalyst.expressions.NamePlaceholder $ .eval(complexTypeCreator.scala:243) 位于org.apache.spark.sql.catalyst.expressions.CreateNamedStructLike $$ anonfun $ names $ 1.apply(complexTypeCreator.scala:289) 位于org.apache.spark.sql.catalyst.expressions.CreateNamedStructLike $$ anonfun $ names $ 1.apply(complexTypeCreator.scala:289) 在scala.collection.immutable.List.map(List.scala:274)