如何修复scala中foreach()缺少的参数类型

如何修复scala中foreach()缺少的参数类型,scala,dataframe,apache-spark,hadoop,intellij-idea,Scala,Dataframe,Apache Spark,Hadoop,Intellij Idea,下面是我的scala 11.12代码 val res= Config().getConfig(source_fields.toLowerCase).entrySet() println("Entry set is:"+ res.toString) val pattern = Pattern.compile("^[$].*$") println("Regex pattern is: "+pattern) var query="" res.forEach(el

下面是我的scala 11.12代码

val res= Config().getConfig(source_fields.toLowerCase).entrySet()
    println("Entry set is:"+ res.toString)
    val pattern = Pattern.compile("^[$].*$")
    println("Regex pattern is: "+pattern)
    var query=""
    res.forEach(elem => {
      val matcher = pattern.matcher(elem.getValue.render().replace("\"", ""))
      query += "," + (if (matcher.matches()) "'" + matcher.group().replace("$", "") + "'" + " as " + elem.getKey.replace("\"", "`")
      else elem.getValue.render().replace("\"", "") + " as " + elem.getKey.replace("\"", "`")
        )
    }
    )


如果我添加sdk-2.12,这将成功构建。但是我的集群是用scala 2.11安装的,它在那里失败了,线程“main”java.lang.NoSuchMethodError中出现错误-
异常:scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object
。知道如何解决这个问题吗?

这种异常会导致scala版本不匹配,可能是因为您混合了依赖项的scala版本,或者编译和运行时环境之间的scala版本不同


因此,如果您使用scala 2.12构建程序,并尝试使用scala 2.11运行程序,您可能会遇到此异常

我仅通过使用res.asScala.foreach解决了此问题

这是否回答了您的问题?如果我将sdk更改为2.11,它会在“res.foreach(elem=>{”行中抛出一个错误,表示“缺少参数类型”编译失败。如果我将其改回2.12,它将成功编译,然后在println(df.collect())失败,错误为-[Lorg.apache.spark.sql.Row;@3b6fa89a。这段代码在几周前运行良好,但现在失败了