【问题标题】:Databricks connect fails with No FileSystem for scheme: abfssDatabricks 连接失败,方案没有文件系统:abfss
【发布时间】:2020-02-28 15:35:57
【问题描述】:

我已设置 Databricks Connect,以便我可以在本地开发并获得 Intellij 好东西,同时利用 Azure Databricks 上大型 Spark 集群的强大功能。

当我想读取或写入 Azure Data Lake 时 spark.read.csv("abfss://blah.csv) 我得到以下内容

xception in thread "main" java.io.IOException: No FileSystem for scheme: abfss
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2586)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2593)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2632)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2614)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:547)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:545)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.immutable.List.foreach(List.scala:392)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
    at scala.collection.immutable.List.flatMap(List.scala:355)
    at org.apache.spark.sql.execution.datasources.DataSource.org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary(DataSource.scala:545)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:359)
    at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
    at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:618)
    at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:467)

来自this 我的印象是,在本地引用 Azure Data Lake 不会有问题,因为代码是远程执行的。显然我错了。

有没有人能解决这个问题?

【问题讨论】:

  • 看起来您没有运行 databricks connect 并且只是在本地执行 pyspark。你也安装了 pyspark 吗?
  • 我实际上正在运行 Scala 代码。我没有本地安装任何火花。但是我确实指定我正在启动一个本地 SparkSession。这是教程中指定的。那是错的吗?另外运行databricks connect意味着什么?它们只是项目中导入的一组jar,对吧?
  • 这是一个python库,必须先安装和配置。然后,您可以导入 jars 而不是通常的 spark 库。 docs.databricks.com/dev-tools/databricks-connect.html
  • 是的。我已经按照这个教程做了所有的事情。至少我是这么认为的。你有什么建议?
  • @simon_dmorias 如果我执行databricks-connect test 命令,我可以在数据块上的 Spark UI 中看到输出。这意味着我能够连接到集群。问题是如何绕过abfss路径的解析。我希望这是可能的。

标签: apache-spark azure-databricks databricks-connect


【解决方案1】:

问题的原因是我想拥有 Spark 的源并能够在 Databricks 上执行工作负载。不幸的是,databricks-connect jars 不包含源。所以这意味着我需要在项目中手动导入它们。这就是问题所在 - 就像它在docs 中所说的那样:

... If this is not possible, make sure that the JARs you add are at the front of the classpath. In particular, they must be ahead of any other installed version of Spark (otherwise you will either use one of those other Spark versions and run locally ...

我就是这么做的。

现在我可以烤蛋糕吃了!

唯一的问题是,如果我添加新的依赖项,我必须再次重新排序。

【讨论】:

  • 能否提供所需的 jar 列表以及在哪里下载?
  • @NabarunDey 如果您从上方打开文档链接,您将看到有关如何获取所需 jar 的说明。简而言之 - 您需要下载 databricks-connect cli。根据您下载的版本 - 必须与您的 databricks 集群运行时保持一致 - 您将获得一组可以根据链接访问的 jar。您可以在同一链接中找到有关如何将它们添加到类路径的命令,
猜你喜欢
  • 2021-05-25
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2021-11-15
  • 2016-03-06
  • 1970-01-01
相关资源
最近更新 更多