我在VM上使用CDH
和HDP
一段时间(都在伪分布式模式下)以及在Ubuntu上本地安装。虽然我的问题可能与Apache Hadoop Ecosystem
中的所有项目有关,但请允许我在Avro
的背景下具体提出这一问题。
了解包中不同包和类的功能的最佳方法是什么。我通常最终会引用项目的Javadoc(在这种情况下为Avro
)但是包和类的概述最终还是非常不合适。
例如取两个Avro软件包:org.apache.avro.specific
和org.apache.avro.generic
这些软件包分别用于创建Specific
和Generic
Readers
和Writers
但我我不是100%肯定这些是为了什么。我使用Specific
包时,我使用Avro
代码生成,而当我不想使用代码生成时使用通用代码。但是,我不确定这是否是使用一个与另一个的唯一原因。
另一个例子:Encoder\Decoder
类用于低级SerDe,DatumReader\DatumWrite
用于“中级”Serde,而大多数应用层与Avro的交互可能会使用Generic\Specific
Readers\Writers
。如果没有通过使用这些类的痛苦,用户如何知道用什么?
是否有更好的方法可以很好地了解每个包(显然javadoc没有详细记录)和包中的类?
PS:对于基本上所有其他Hadoop
项目(Hive
,HBASE
等),我有类似的问题 - Javadocs似乎总体上非常不合适。我只是想知道其他开发人员最终会做些什么来解决这些问题。
任何输入都会很棒。
答案 0 :(得分:1)
我下载源代码并浏览它以了解它的作用。如果有javadoc,我也会读到。我倾向于专注于我需要的接口并从那里继续前进,这样我将所有内容都放在上下文中,这样可以更容易地找出用法。我使用调用层次结构和类型层次结构查看很多。
这些是非常一般的指导方针,最终是您花在项目上的时间,这将使您了解它。
Hadoop生态系统正在快速增长,每月都会引入变化。这就是javadoc不太好的原因。另一个原因是hadoop软件倾向于倾向于基础设施,而不是倾向于最终用户。开发工具的人将花时间学习API和内部,而其他人有点无知所有这些,并且只是使用一些高级域特定语言的工具。