Ошибка блоков данных java .lang.NoSuchMethodError: scala .Predef $ .refArrayOps ([Ljava / lang / Object;) [Ljava / lang / Object; - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь запустить пример кода по этой ссылке: 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")

, а затем пытаюсь получить список строк, запустив df.select("id").map(_.getString(0)).collect.toList

и получаю ошибку ниже

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

t line3700fe51392b4abe9744f6b470 $$ iw $$ iw $$ iw $$ iw $$ iw $$ iw $$ iw. (command-1275538363433250: 2) на line3700fe51392b4abe9744f6b3a059dbfa46. $ read $$ iw $$ iw $$ iw $$ iw $ $ iw $$ iw $$ iw. (command-1275538363433250: 53) в строке 3700fe51392b4abe9744f6b3a059dbfa46. $ read $$ iw $$ iw $$ iw $$ iw $$ iw. $ read $$ iw $$ iw $$ iw $$ iw. (command-1275538363433250: 57) на line3700fe51392b4abe9744f6b3a059dbfa46. $ read $$ iw $$ iw $$ iw $$ iw. (command-1275538363433250: 59 на линии 3700fe51 392b4abe9744f6b3a059dbfa46. $ Read $$ iw $$ iw $$ iw. (Command-1275538363433250: 61) по адресу line3700fe51392b4abe9744f6b3a059dbfa46. $ Read $$ iw $$ iw. (Command-12756506b3) команда-1275538363433250:. 65) при line3700fe51392b4abe9744f6b3a059dbfa46 $ чтения (команда-1275538363433250:. 67) на line3700fe51392b4abe9744f6b3a059dbfa46 $ читать $ (команда-1275538363433250:.. 71) при line3700fe51392b4abe9744f6b3a059dbfa46 $ чтения $ (команда-1275538363433250) при line3700fe51392b4abe9744f6b3a059dbfa46 $ Eval... $. $ print $ lzycompute (: 7) в строке 3700fe51392b4abe9744f6b3a059dbfa46. $ eval $. $ print (: 6) в line3700fe51392b4abe9744f6b3a059dbfa46. $ eval. $ print () в sun.reflex.Native0 NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.ref. scala .tools.ns c .interpreter.IMain $ ReadEvalPrint.call (IMain. scala: 793) по scala .tools.ns c .interpreter.IMain $ Request.loadAndRun (IMain. scala: 1054) по scala .tools.ns c .interpreter.IMain $ WrappedRequest $$ anonfun $ loadAndRunReq $ 1.apply (IMain. scala: 645) в scala .tools.ns c .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 (AbstractFileClassLoo). scala: 19) в scala .tools.ns c .interpreter.IMain $ WrappedRequest.loadAndRunReq (IMain. scala: 644) в scala .tools.ns c .interpreter.IMain. интерпретировать (IMain. scala: 576) на scala .tools.ns c .interpreter.IMain.interpret (IMain. scala: 572) на com.databricks.backend.daemon.driver.DriverIL oop .execute (DriverIL oop. scala: 215) на com.databricks.backend.daemon.driver.ScalaDriverLocal $$ anonfun $ repl $ 1.apply $ mcV $ sp (ScalaDriverLocal. scala: 202) на com .databricks.backend.daemon.driv er.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 $ execute $ 9.apply (DriverLocal. scala: 362) на com.databricks.logging.UsageLogging $$ anonfun $ с помощьюAttributionContext $ 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 (Попробуйте. scala: 192) в com.databricks. backend.daemon.driver.DriverWrapper.tryExecutingCommand (DriverWrapper. scala: 639) по адресу com.databricks.backend.daemon.driver.DriverWrapper.getCommandOutputAndError (DriverWrapper. scala: 485) по адресу. driver.DriverWr apper.executeCommand (DriverWrapper. scala: 597) на com.databricks.backend.daemon.driver.DriverWrapper.runInnerL oop (DriverWrapper. scala: 390) на com.databricks.backend.daemon.driver.DriverWrapper .runInner (DriverWrapper. scala: 337) в com.databricks.backend.daemon.driver.DriverWrapper.run (DriverWrapper. scala: 219) в java .lang.Thread.run (поток. java). : 748)

Я получаю ту же ошибку при запуске df.select("id").collect().map(_(0)).toList

, но не при запуске df.select("id").rdd.map(_(0)).collect.toList

Команда, которая выполняется выше, успешно возвращает список [Любой] , но мне нужен список [String]

Может кто-нибудь пожалуйста посоветовать? Я подозреваю, что это несоответствие версии scala, но я не могу понять, что не так.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Исключение

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

часто возникает, если вы смешиваете разные версии scala. У вас есть какие-либо зависимости, загруженные для scala 2.12?

EDIT : Я только что проверил ваш код в блоках данных с той же самой средой выполнения, работал просто отлично ...

0 голосов
/ 29 февраля 2020

In .map преобразовать в строку, используя .toString, тогда результат будет List[String]

Example:

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