我编写了一个使用spark-submit
在群集上运行的Spark应用。这是我build.sbt
的一部分。
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" % "provided" exclude("asm", "asm")
libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.6.1" % "provided"
asm
被排除在外,因为我正在使用另一个依赖于其不同版本的库。 Spark中的asm
依赖关系似乎来自Hadoop的一个家属,我没有使用该功能。
现在的问题是,使用此设置,saveToTextFile("s3n://my-bucket/dir/file")
会抛出java.io.IOException: No FileSystem for scheme: s3n
。
为什么会这样?不应该spark-submit
提供Hadoop依赖吗?
我尝试了一些事情:
"provided"
hadoop-aws
以及spark.executor.extraClassPath
将spark.driver.extraClassPath
放在类路径上。这需要对其所有传递依赖关系做同样的事情,这可能很痛苦。两者都不起作用。有更好的方法吗?
我使用预先构建的spark-1.6.1-bin-hadoop2.6
。