【问题标题】:Spark 2.0.0 - No FileSystem for scheme: null error in IntelliJ SBT projectSpark 2.0.0 - 方案没有文件系统:IntelliJ SBT 项目中的空错误
【发布时间】:2016-12-13 10:08:48
【问题描述】:

最近从 Spark 1.6.1 升级到 Spark 2.0 后,我的一个 IntelliJ Idea Scala 程序似乎无法运行并退出并显示消息“No FileSystem for scheme:null error”。我用谷歌搜索了这个错误,但似乎得到了与 hdfs 相关的错误,而且它们似乎与我所看到的无关。

我确实对 Spark 2.0 中的更改进行了代码更改。更改是使用 SparkSession 而不是 SparkContext 和 SparkSQL。

找到下面的代码:

import org.apache.spark.sql.SparkSession

object PropertyInvestmentCalcs {
def main(args: Array[String]) {

val spark = SparkSession
  .builder()
  .appName("Spark PropertyInvestmentCalcs")
  .master("spark://ODROIDXU41:7077")
  .config("spark.sql.warehouse.dir", "\\\\SERVER\\Users\\USER\\MYDrive\\Programming\\IntelliJ\\PropertyInvestmentCalcs\\spark-warehouse")
//val sqlContext = new org.apache.spark.sql.SparkSession(spark)

// Get number of data records in the table
val nrRecordsDF = spark.read.format("jdbc")
  .option("url", "jdbc:mysql://localhost:3306/test")
  .option("driver", "com.mysql.jdbc.Driver")
  .option("dbtable", "(SELECT COUNT(*) AS nrRecords FROM test.propertydb) AS nrRecords_tmp")
  .option("user", "user")
  .option("password", "password").load()
nrRecordsDF.show()
nrRecordsDF.printSchema()
}
}

我的 build.sbt 文件的内容: 导入 sbt._

name := "PropertyInvestmentCalcs"

version := "0.1.0-SNAPSHOT"

scalaVersion := "2.11.8"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0" //% "provided"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0" //% "provided"
libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.0.0" //% "provided"
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.39"

lazy val commonSettings = Seq(
  version := "0.1-SNAPSHOT",
  organization := "TJVR",
  scalaVersion := "2.11.8"
)

lazy val app = (project in file("app")).
  settings(commonSettings: _*).
  settings(
// your settings here
  )

artifact in (Compile, assembly) := {
  val art = (artifact in (Compile, assembly)).value
  art.copy(`classifier` = Some("assembly"))
}

addArtifact(artifact in (Compile, assembly), assembly)

我的 plugins.sbt 文件的内容:

logLevel := Level.Warn

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")

提前感谢您的帮助。

【问题讨论】:

  • 如果使用HiveContext,Spark SQL Warehouse 目录设置有点与 Hadoop 相关。我认为问题出现在`\\\\SERVER\\`。带有前导斜线。
  • 嗨@cricket_007,感谢您的评论。如果我没有指定该服务器 URL,那么我会收到一条消息:线程“主”java.lang.IllegalArgumentException 中的异常:java.net.URISyntaxException:绝对 URI 中的相对路径:文件:C:/Users/USER/Drive /Programming/IntelliJ/PropertyInvestmentCalcs/spark-warehouse 似乎从数据库加载的任何内容都存储在 HDFS 存储中。然而,从我的角度来看,HDFS 存在问题。如果我错了,请纠正我。不幸的是,问题仍然存在。
  • 我从未见过从 NFS / SMB 存储读取火花。你对 HDFS 或将文件移动到本地文件系统有什么看法?

标签: scala apache-spark sbt


【解决方案1】:

解决方案(感谢@cricket_007):

删除服务器前的前两个斜杠。从 Windows 用户的角度来看,这并不直观,但它就是这样工作的。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2016-05-24
    • 2021-05-25
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多