【发布时间】:2015-02-08 17:48:08
【问题描述】:
我正在尝试在我的 pom.xml 中使用 CDH 5(Cloudera Hadoop Distribution)存储库,如Cloudera documentation 中所述。但是 Maven 抱怨 AvroRecord not found。
这是我的 pom.xml 中的存储库设置:
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
这是我在 pom.xml 中声明对 Hadoop 的依赖的方式(排除部分是关于摆脱错误“javax.servlet.FilterRegistration 的签名者信息与同一包中其他类的签名者信息不匹配"):
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.5.0-cdh5.2.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
当我查看 Hadoop 的文档时,AvroRecord 似乎存在:
但是当我查看 Cloudera 的分支 cdh5-2.5.0_5.2.1 的源代码时,它似乎不存在:
换句话说,Cloudera 版本似乎存在以下问题,但在我使用 Hadoop 存储库时似乎可以正常工作:
import org.apache.hadoop.io.serializer.avro.AvroRecord;
使用 Cloudera Hadoop 时如何获取 AvroRecord 类?
【问题讨论】:
-
它在 hadoop-common 中吗?我认为这个模块还有其他的源代码树。
-
@SeanOwen 另一个搜索返回了this,在2.0.0-cdh4.0.1 中显示
hadoop-common中的AvroRecord类。我是否使用了错误的依赖项? Cloudera发行版中不是hadoop-common吗?