好吧,我有一个使用spark和spark sql的sbt项目,但是我的集群使用hadoop 1.0.4和spark 1.2和spark-sql 1.2,目前我的build.sbt看起来像这样:
libraryDependencies ++= Seq(
"com.datastax.cassandra" % "cassandra-driver-core" % "2.1.5",
"com.datastax.cassandra" % "cassandra-driver-mapping" % "2.1.5",
"com.datastax.spark" % "spark-cassandra-connector_2.10" % "1.2.1",
"org.apache.spark" % "spark-core_2.10" % "1.2.1",
"org.apache.spark" % "spark-sql_2.10" % "1.2.1",
)
事实证明,我正在使用hadoop 2.2.0运行该应用程序,但我希望在我的依赖项中看到hadoop-*-1.0.4。我该怎么办?
您可以从Spark到hadoop排除依赖项,并添加具有所需版本的显式依赖项,如下所示:
libraryDependencies ++= Seq(
"com.datastax.cassandra" % "cassandra-driver-core" % "2.1.5",
"com.datastax.cassandra" % "cassandra-driver-mapping" % "2.1.5",
"com.datastax.spark" % "spark-cassandra-connector" %% "1.2.1",
"org.apache.spark" % "spark-sql_2.10" % "1.2.1" excludeAll(
ExclusionRule("org.apache.hadoop")
),
"org.apache.hadoop" % "hadoop-client" % "2.2.0"
)
您可能不需要依赖项,spark-core
因为spark-sql
应该将其传递给您。
另外,请注意,这spark-cassandra-connector
也可能取决于火花,这可能会再次传递可依赖的hadoop =>,您可能还需要在其中添加排除规则。
最后说明:一个很好的工具,用于调查哪个依赖项来自哪里https://github.com/jrudolph/sbt-dependency-graph
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句