apache-spark - Databricks 连接失败,方案没有文件系统:abfss
问题描述
我已经设置了 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)
由此我的印象是,由于代码是远程执行的,因此在本地引用 Azure Data Lake 不会有问题。显然我错了。
有没有人可以解决这个问题?
解决方案
问题的原因是我想拥有 Spark 的源并能够在 Databricks 上执行工作负载。不幸的是,databricks-connect jars 不包含源。所以这意味着我需要在项目中手动导入它们。这是摩擦 - 就像它在文档中所说的那样:
... 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 ...
我就是这么做的。
现在我可以烤蛋糕吃了!
唯一的问题是,如果我添加新的依赖项,我必须再次重新排序。
推荐阅读
- css - SVG路径旋转动画
- java - Spring Data 未更新最新数据
- angular - 部署 Azure Web App (Angular) 不工作
- php - PHP/MYSQL 比较本月和上月的日期
- html - 有一种风格的 h1::after 和另一种风格的 .class h1::after 吗?
- php - 在php中将WordPress特征图像转换为背景图像
- javascript - For 循环工作,但当我使用 JavaScript 转换为 reduce 函数时出错
- javascript - 如何根据键条件通过两个键对对象进行排序
- karate - 并行运行空手道测试是否必须使用弹簧靴?
- python - 不期待任何消息时如何停止阅读