首页 > 解决方案 > Databricks 连接:sparkContext.wholeTextFiles

问题描述

我已经设置了 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:///

我觉得沿着满足的道路以及以某种方式未包含在 jar 中的每个依赖项可能不是最佳选择。

我想知道是否有人有过类似的经历,如果有的话——他们是如何解决这个问题的。

如果有必要,我愿意提供更多背景信息。

谢谢!

标签: apache-sparkdatabricks-connect

解决方案


推荐阅读