了解Hadoop包和类

时间:2014-11-24 20:30:31

标签: class hadoop packages avro

我在VM上使用CDHHDP一段时间(都在伪分布式模式下)以及在Ubuntu上本地安装。虽然我的问题可能与Apache Hadoop Ecosystem中的所有项目有关,但请允许我在Avro的背景下具体提出这一问题。

了解包中不同包和类的功能的最佳方法是什么。我通常最终会引用项目的Javadoc(在这种情况下为Avro)但是包和类的概述最终还是非常不合适。

例如取两个Avro软件包:org.apache.avro.specificorg.apache.avro.generic这些软件包分别用于创建SpecificGeneric ReadersWriters但我我不是100%肯定这些是为了什么。我使用Specific包时,我使用Avro代码生成,而当我不想使用代码生成时使用通用代码。但是,我不确定这是否是使用一个与另一个的唯一原因。

另一个例子:Encoder\Decoder类用于低级SerDe,DatumReader\DatumWrite用于“中级”Serde,而大多数应用层与Avro的交互可能会使用Generic\Specific Readers\Writers。如果没有通过使用这些类的痛苦,用户如何知道用什么?

是否有更好的方法可以很好地了解每个包(显然javadoc没有详细记录)和包中的类?

PS:对于基本上所有其他Hadoop项目(HiveHBASE等),我有类似的问题 - Javadocs似乎总体上非常不合适。我只是想知道其他开发人员最终会做些什么来解决这些问题。

任何输入都会很棒。

1 个答案:

答案 0 :(得分:1)

我下载源代码并浏览它以了解它的作用。如果有javadoc,我也会读到。我倾向于专注于我需要的接口并从那里继续前进,这样我将所有内容都放在上下文中,这样可以更容易地找出用法。我使用调用层次结构和类型层次结构查看很多。

这些是非常一般的指导方针,最终是您花在项目上的时间,这将使您了解它。

Hadoop生态系统正在快速增长,每月都会引入变化。这就是javadoc不太好的原因。另一个原因是hadoop软件倾向于倾向于基础设施,而不是倾向于最终用户。开发工具的人将花时间学习API和内部,而其他人有点无知所有这些,并且只是使用一些高级域特定语言的工具。