我正在尝试在我的pom.xml中使用CDH 5(Cloudera Hadoop Distribution)存储库,如Cloudera documentation中所述。但Maven抱怨找不到AvroRecord
。
这是我的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课程?
答案 0 :(得分:1)
我花了一分钟才弄明白。上游也“不存在”: https://github.com/apache/hadoop/tree/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/serializer/avro
但这是因为它是一个生成的类。定义如下: https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/test/avro/avroRecord.avsc https://github.com/cloudera/hadoop-common/blob/cdh5-2.5.0_5.2.1/hadoop-common-project/hadoop-common/src/test/avro/avroRecord.avsc
你没有找到它,大概是因为它也是一个测试类,不包含在任何发行版中。我有点困惑的是它是如何进入主项目javadoc的。