【问题标题】:In sbt, how can we specify the version of hadoop on which spark depends?在 sbt 中,我们如何指定 spark 依赖的 hadoop 版本?
【发布时间】:2015-08-31 20:33:38
【问题描述】:

我有一个使用 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。请问我该怎么办?

【问题讨论】:

    标签: scala apache-spark sbt


    【解决方案1】:

    您可以排除 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 可能还依赖于 spark,这可能会再次传递回 hadoop => 您可能还需要在此处添加排除规则。

    最后一点:一个很好的工具来调查哪个依赖来自哪里https://github.com/jrudolph/sbt-dependency-graph

    【讨论】:

    • 谢谢,哦,你说的插件不错!
    猜你喜欢
    • 1970-01-01
    • 2017-08-06
    • 2014-06-30
    • 2016-01-25
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多