У меня есть настройка databricks-connect версии 5.5.0. Это время выполнения включает Scala 2.11 и Spark 2.4.3. Весь код Spark, который я написал, был выполнен правильно и без проблем, пока я не попытался вызвать sparkContext.wholeTextFiles
. Я получаю следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: shaded/databricks/v20180920_b33d810/com/google/common/base/Preconditions
at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.ensureAuthority(AzureBlobFileSystem.java:775)
at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.initialize(AzureBlobFileSystem.java:94)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.setInputPaths(FileInputFormat.java:500)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.setInputPaths(FileInputFormat.java:469)
at org.apache.spark.SparkContext$$anonfun$wholeTextFiles$1.apply(SparkContext.scala:997)
at org.apache.spark.SparkContext$$anonfun$wholeTextFiles$1.apply(SparkContext.scala:992)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
at org.apache.spark.SparkContext.withScope(SparkContext.scala:820)
at org.apache.spark.SparkContext.wholeTextFiles(SparkContext.scala:992)
...
Caused by: java.lang.ClassNotFoundException: shaded.databricks.v20180920_b33d810.com.google.common.base.Preconditions
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 20 more
Одной из попыток решения проблемы был переход на последнюю версию среды выполнения Databricks, которая на момент написания этой статьи составляла 6,5. Это не помогло. Я продолжил возвращаться к версиям - 6.4 и 6.3 - так как они используют разные версии Spark, но безрезультатно.
Еще одна вещь, которую я пробовал, это добавление "com.google.guava" % "guava" % "23.0"
в качестве зависимости от моего build.sbt
. Это само по себе приводит к ошибкам вроде:
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: abfss://abc-fs@cloud.dfs.core.windows.net/paths/something, expected: file:///
Я чувствую, что идти по пути удовлетворения и любой зависимости, которая так или иначе не включена в банку, может быть не лучшим вариантом.
Интересно, был ли у кого-то подобный опыт, и если да, то как они решили это?
Я хочу дать больше контекста, если это необходимо.
Спасибо!