我怎样才能使HBase与sbt的依赖关系管理很好地配合?
|
我正在尝试进行一个使用CDH3的Hadoop和HBase的sbt项目。我正在尝试使用project / build / Project.scala文件声明对HBase和Hadoop的依赖关系。 (我承认我对sbt,maven和ivy的掌握有些薄弱。如果我要说或做些愚蠢的事情,请原谅我。)
一切都与Hadoop依赖关系紧密相连。添加HBase依赖关系会导致对Thrift 0.2.0的依赖关系,对于此关系似乎没有回购协议,或者从SO帖子中听起来很像。
所以,实际上,我有两个问题:
1.老实说,我不想依赖Thrift,因为我不想使用HBase的Thrift接口。有没有办法告诉sbt跳过它?
2.是否有更好的方法进行设置?我应该只将HBase jar转储到lib目录中并继续吗?
更新这是完成我想要的工作的sbt 0.10 build.sbt文件:
scalaVersion := \"2.9.0-1\"
resolvers += \"ClouderaRepo\" at \"https://repository.cloudera.com/content/repositories/releases\"
libraryDependencies ++= Seq(
\"org.apache.hadoop\" % \"hadoop-core\" % \"0.20.2-cdh3u0\",
\"org.apache.hbase\" % \"hbase\" % \"0.90.1-cdh3u0\"
)
ivyXML :=
<dependencies>
<exclude module=\"thrift\"/>
</dependencies>
没有找到相关结果
已邀请:
2 个回复
摊揉售
回复:将罐子转储到lib目录中,这将是短期收益,长期损失。这当然是更方便的做法,如果这是某种概念上的证明,那么您下周将要扔掉它,请确保将它放进罐子中,然后将其忘记。但是,对于任何寿命超过几个月的项目,都值得花一些时间来正确进行依赖项管理。 尽管所有这些工具都面临挑战,但好处是: 依赖性分析可以告诉您何时直接依赖性具有冲突的传递性依赖性。在使用这些工具之前,这通常会导致怪异的运行时行为或未找到方法的异常。 升级非常简单。只需更改版本号,更新,就可以完成。 它避免了将二进制文件提交到版本控制。合并分支时,它们可能会出现问题。 除非您对在lib目录中对二进制文件进行版本控制有明确的策略,否则很容易忘记所拥有的版本。
舜辉
,在其中定义了一个名为
的变量(该变量定义了Cloudera存储库位置)和一个名为
的变量,该变量定义了Hadoop jar的特定信息。 如果在浏览器中转到Cloudera存储库,则应该能够导航到Hive的相应信息。