如何在 Spark SQL 中使用 Java 在 DataFrame 中进行筛选来联接多个列


  • DataFrame a = 包含列 x,y,z,k
  • DataFrame b = 包含列 x,y,a

    a.join(b,<condition to use in java to use x,y >) ??? 
    

我试过使用

a.join(b,a.col("x").equalTo(b.col("x")) && a.col("y").equalTo(b.col("y"),"inner")

但是Java抛出错误说&&这是不允许的。

Spark SQL提供了一组标记为java_expr_ops Column的方法,这些方法专为Java互操作性而设计。它包括and(另见or)方法,可以在这里使用:

a.col("x").equalTo(b.col("x")).and(a.col("y").equalTo(b.col("y"))
如果要

使用多列进行联接,可以执行以下操作:

a.join(b,scalaSeq, joinType)

您可以将列存储在 Java-List 中,并将 List 转换为 Scala seq。将 java-list 转换为 scala-seq:

scalaSeq = JavaConverters.asScalaIteratorConverter(list.iterator()).asScala().toSeq();

示例:a = a.join(b, scalaSeq, "inner");

注意:通过这种方式可以轻松支持动态列。

相关内容

  • 没有找到相关文章

最新更新