在sbt中,我们如何指定spark所依赖的hadoop版本?

时间:2015-06-16 06:46:54

标签: apache-spark sbt

我有一个使用spark和spark sql的sbt项目,但是我的集群使用hadoop 1.0.4和spark 1.2 with 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。我该怎么办?

1 个答案:

答案 0 :(得分:4)

您可以排除从Spark到hadoop的依赖关系,并添加一个显示您需要的版本的依赖项,其中包括以下内容:

$dt = new \DateTime('@1434438947'); //unix timestamp
$diff = $dt->diff(new \DateTime(), true);

echo $diff->days * 1440 + $diff->h * 60 + $diff->i; //minutes difference absolute

您可能不需要依赖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可能还取决于火花,这可能会再次传递回来hadoop =>您可能还需要在其中添加排除规则。

最后一点:用于调查哪个依赖关系来自https://github.com/jrudolph/sbt-dependency-graph

的优秀工具