java - scala.collection.Seq 不适用于 Java

标签 java scala apache-spark

使用:

  • Apache Spark 2.0.1
  • Java 7

在类 DataSet 的 Apache Spark Java API 文档中出现 example使用方法 join 使用 scala.collection.Seq 参数指定列名。但我无法使用它。 在文档中,他们提供了以下示例:

df1.join(df2, Seq("user_id", "user_name"))

错误:找不到符号方法 Seq(String)

我的代码:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import scala.collection.Seq;

public class UserProfiles {

public static void calcTopShopLookup() {
    Dataset<Row> udp = Spark.getDataFrameFromMySQL("my_schema","table_1");

    Dataset<Row> result = Spark.getSparkSession().table("table_2").join(udp,Seq("col_1","col_2"));
}

最佳答案

Seq(x, y, ...) 是一种创建序列的 Scala 方法。 Seq 有它的伴生对象,它有 apply 方法,允许不用每次都写 new

应该可以这样写:

import scala.collection.JavaConversions;
import scala.collection.Seq;

import static java.util.Arrays.asList;

Dataset<Row> result = Spark.getSparkSession().table("table_2").join(udp, JavaConversions.asScalaBuffer(asList("col_1","col_2")));`

或者你可以创建自己的小方法:

 public static <T> Seq<T> asSeq(T... values) {
        return JavaConversions.asScalaBuffer(asList(values));
    }

关于java - scala.collection.Seq 不适用于 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741459/

相关文章:

java - 将 XML 放入嵌套布局后,数学逻辑停止工作

类的 Java OOP 实例

scala - 反序列化选项返回 None 而不是 json4s 中的异常

scala - org.apache.arrow 的 sbt-assembly 重复数据删除错误

java - 如何从 spark 中设置和获取静态变量?

scala - Spark-在分组和收集期间跨列维护数据顺序

java - 如何修复 "Exception in thread "main"java.lang.NoClassDefFoundError : com/dropbox/core/json/JsonReader$FileLoadException"

java - 如何在 Scala 中将一个或多个文件从一个文件夹移动到另一个文件夹

apache-spark - 如何爆炸结构数组?

java - 使用在 JTable 上的 JTextfield 中键入的名字或姓氏搜索 MYSQL 数据库过滤