java.lang.ClassCastException:org.apache.spark.sql.Column无法强制转换为scala.collection.Seq
为了在java中的spark应用程序中使用RightJoin,我正在执行类似的操作java.lang.ClassCastException:org.apache.spark.sql.Column无法强制转换为scala.collection.Seq,java,scala,apache-spark,Java,Scala,Apache Spark,为了在java中的spark应用程序中使用RightJoin,我正在执行类似的操作 Dataset<Row> dataset3 = dataset1.join(dataset2, (Seq<String>) dataset1.col("target_guid"),RightOuter.sql()); 除此之外,我找不到在java中为数据集使用连接的方法。 有人能帮我找到一种方法吗?可以将您的代码改成这样 Dataset<Row> datase
Dataset<Row> dataset3 = dataset1.join(dataset2,
(Seq<String>) dataset1.col("target_guid"),RightOuter.sql());
除此之外,我找不到在java中为数据集使用连接的方法。
有人能帮我找到一种方法吗?可以将您的代码改成这样
Dataset<Row> dataset3 = dataset1.as("dataset1").join(dataset2.as("dataset2"),
dataset1.col("target_guid").equalTo(dataset2.col("target_guid")), RightOuter.sql());
dataset3=dataset1.as(“dataset1”).join(dataset2.as(“dataset2”),
dataset1.col(“target_guid”).equalTo(dataset2.col(“target_guid”))、righouter.sql();
如果您想在java中使用以下数据集api-
def join(right: Dataset[_], usingColumns: Seq[String], joinType: String): DataFrame
然后将字符串列表转换为seq。由于大多数spark API都接受scala-seq
导入scala.collection.JavaConversions;
缓冲区toScalaSeq(列表){
返回JavaConversions.asScalaBuffer(列表);
}
另外,您不能将joinType
用作righouter.sql()
,它的计算结果为“RIGHT OUTER”
。支持的连接类型包括-
'inner', 'outer', 'full', 'fullouter', 'full_outer', 'leftouter', 'left', 'left_outer', 'rightouter', 'right', 'right_outer', 'leftsemi', 'left_semi', 'leftanti', 'left_anti', 'cross'
现在你可以使用-
dataset3=dataset1.join(dataset2,
toScalaSeq(Arrays.asList(“target_guid”),“righouter”);
请参考:是的,先生,但这是给scala的。我在java中需要它。你打算加入哪些专栏?@Moulikapolisety,你能检查我的答案并向上投票+接受它是否对你有帮助吗?@SomeshwarKale是的,先生,检查过了。请检查您答案下方的评论。无法在此处标记u。此命令引发以下错误:org.apache.spark.sql.AnalysisException:引用“target\u guid”不明确,可能是:target\u guid,target\u guid
更新代码以避免歧义@Moulikapolisetty这是连接数据,但结果数据集的计数要高得多(比两个输入数据集高10倍),而不是唯一的数据集。如果您想从数据集1
和数据集2
获得公共目标guid
,请使用“内部”为了表示内部joindataset1有多个列,其中一个是target_guid(主)dataset2只有一个列target_guid我想比较dataset1中的target_guid与dataset2中的target_guid。dataset2中的目标guid应该与dataset1中的其他列一起出现。你能用正确的输入数据集和预期的输出将其作为saperate问题发布吗?我想我们已经解决了java.lang.ClassCastException:org.apache.spark.sql.Column不能强制转换为scala.collection.Seq
,否?您提出了查询吗?如果有帮助,请接受并投票
'inner', 'outer', 'full', 'fullouter', 'full_outer', 'leftouter', 'left', 'left_outer', 'rightouter', 'right', 'right_outer', 'leftsemi', 'left_semi', 'leftanti', 'left_anti', 'cross'