如何在使用spark joinWith创建Tuple2时修复UnsupportedOperationException

时间:2019-02-05 20:54:16

标签: java apache-spark apache-spark-dataset

我正在将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)

0 个答案:

没有答案