【发布时间】: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