Databricks error java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

Databricks error java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

我正在尝试 运行 来自这个 link 的一些示例代码:https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/5537430417240233/312903576646278/3506802399907740/latest.html

我运行在集群上的数据块笔记本中使用 运行时间 6.3(包括 Apache Spark 2.4.4、Scala 2.11) 我最初使用

创建数据框
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.getOrCreate
import spark.implicits._

val df = Seq(
    ("one", 2.0),
    ("two", 1.5),
    ("three", 8.0)
  ).toDF("id", "val")

然后我尝试通过 运行ning 获取字符串列表 df.select("id").map(_.getString(0)).collect.toList

我得到以下错误

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

t line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(command-1275538363433250:2) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.(command-1275538363433250:53) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw$$iw$$iw$$iw.(command-1275538363433250:55) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw$$iw$$iw.(command-1275538363433250:57) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw$$iw.(command-1275538363433250:59) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw$$iw.(command-1275538363433250:61) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw$$iw.(command-1275538363433250:63) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$$iw.(command-1275538363433250:65) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read.(command-1275538363433250:67) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$.(command-1275538363433250:71) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$read$.(command-1275538363433250) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$eval$.$print$lzycompute(:7) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$eval$.$print(:6) 在 line3700fe51392b4abe9744f6b3a059dbfa46.$eval.$print() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:793) 在 scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1054) 在 scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:645) 在 scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:644) 在 scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31) 在 scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:19) 在 scala.tools.nsc.interpreter.IMain$WrappedRequest.loadAndRunReq(IMain.scala:644) 在 scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:576) 在 scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:572) 在 com.databricks.backend.daemon.driver.DriverILoop.execute(DriverILoop.scala:215) 在 com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl$1.apply$mcV$sp(ScalaDriverLocal.scala:202) 在 com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl$1.apply(ScalaDriverLocal.scala:202) 在 com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl$1.apply(ScalaDriverLocal.scala:202) 在 com.databricks.backend.daemon.driver.DriverLocal$TrapExitInternal$.trapExit(DriverLocal.scala:699) 在 com.databricks.backend.daemon.driver.DriverLocal$TrapExit$.apply(DriverLocal.scala:652) 在 com.databricks.backend.daemon.driver.ScalaDriverLocal.repl(ScalaDriverLocal.scala:202) 在 com.databricks.backend.daemon.driver.DriverLocal$$anonfun$execute$9.apply(DriverLocal.scala:385) 在 com.databricks.backend.daemon.driver.DriverLocal$$anonfun$执行 $9.apply(DriverLocal.scala:362) 在 com.databricks.logging.UsageLogging$$anonfun$withAttributionContext$1.apply(UsageLogging.scala:251) 在 scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) 在 com.databricks.logging.UsageLogging$class.withAttributionContext(UsageLogging.scala:246) 在 com.databricks.backend.daemon.driver.DriverLocal.withAttributionContext(DriverLocal.scala:49) 在 com.databricks.logging.UsageLogging$class.withAttributionTags(UsageLogging.scala:288) 在 com.databricks.backend.daemon.driver.DriverLocal.withAttributionTags(DriverLocal.scala:49) 在 com.databricks.backend.daemon.driver.DriverLocal.execute(DriverLocal.scala:362) 在 com.databricks.backend.daemon.driver.DriverWrapper$$anonfun$tryExecutingCommand$2.apply(DriverWrapper.scala:644) 在 com.databricks.backend.daemon.driver.DriverWrapper$$anonfun$tryExecutingCommand$2.apply(DriverWrapper.scala:644) 在 scala.util.Try$.apply(Try.scala:192) 在 com.databricks.backend.daemon.driver.DriverWrapper.tryExecutingCommand(DriverWrapper.scala:639) 在 com.databricks.backend.daemon.driver.DriverWrapper.getCommandOutputAndError(DriverWrapper.scala:485) 在 com.databricks.backend.daemon.driver.DriverWrapper.executeCommand(DriverWrapper.scala:597) 在 com.databricks.backend.daemon.driver.DriverWrapper.运行InnerLoop(DriverWrapper.scala:390) 在 com.databricks.backend.daemon.driver.DriverWrapper.运行 内部 (DriverWrapper.scala:337) 在 com.databricks.backend.daemon.driver.DriverWrapper.运行(DriverWrapper.scala:219) 在 java.lang.Thread.run(Thread.java:748)

我在 运行ning 时遇到同样的错误 df.select("id").collect().map(_(0)).toList

但在 运行ning 时不是 df.select("id").rdd.map(_(0)).collect.toList

上面的命令 运行 成功 returns 一个 List[Any],但我需要一个 List[String]

有人可以指点一下吗?我怀疑这是 sparkscala 版本不匹配,但我无法找出问题所在。

.map 中使用 .toString 转换为字符串,结果将是 List[String]

Example:

df.select("id").collect().map(x => x(0).toString).toList
List[String] = List(one, two, three)

异常

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

如果混合使用不同的 Scala 版本,通常会出现这种情况。您是否为 scala 2.12 加载了任何依赖项?

编辑:我刚刚用相同的运行时在数据块中测试了你的代码,工作得很好....