Class 理解Hadoop包和类

Class 理解Hadoop包和类,class,hadoop,packages,avro,Class,Hadoop,Packages,Avro,我已经在虚拟机上使用了CDH和HDP一段时间(都是在伪分布式模式下),也在Ubuntu上进行了本机安装。尽管我的问题可能与apachehadoop生态系统中的所有项目都相关,但让我在Avro的上下文中特别提出这个问题 找出不同包和包中的类的作用的最佳方法是什么。我通常会在项目中引用Javadoc(Avro),但是包和类的概述最终非常不充分 例如,以Avro软件包中的两个为例:org.apache.Avro.specific和org.apache.Avro.generic,它们分别用于创建spec

我已经在虚拟机上使用了
CDH
HDP
一段时间(都是在伪分布式模式下),也在Ubuntu上进行了本机安装。尽管我的问题可能与
apachehadoop生态系统中的所有项目都相关,但让我在
Avro
的上下文中特别提出这个问题

找出不同包和包中的类的作用的最佳方法是什么。我通常会在项目中引用Javadoc(
Avro
),但是包和类的概述最终非常不充分

例如,以Avro软件包中的两个为例:
org.apache.Avro.specific
org.apache.Avro.generic
,它们分别用于创建
specific
generic
阅读器和
编剧
,但我不能100%确定它们的用途。当我使用了
Avro
代码生成时,我使用了
Specific
包,当我不想使用代码生成时,我使用了泛型包。然而,我不确定这是否是使用其中一个与另一个的唯一原因

另一个例子是:
Encoder\Decoder
类用于低级SerDe,而
DatumReader\DatumWrite
类用于“中级”SerDe,而与Avro的大多数应用层交互可能会使用
通用\特定的
读写器
。在没有经历过使用这些类的痛苦的情况下,用户如何知道使用什么呢

有没有更好的方法可以很好地了解每个包(显然javadoc没有很好的文档记录)和包中的类

PS:对于其他所有的
Hadoop
项目(
Hive
HBASE
等等),我基本上都有类似的问题——Javadoc总体上似乎严重不足。我只是想知道其他开发人员最终会做些什么来解决这些问题


任何输入都很好。

我下载了源代码并浏览了一遍,了解了它的功能。如果有javadoc,我也会读。我倾向于专注于我需要的接口,并从那里继续,这样我就可以将所有内容放到上下文中,从而更容易地了解用法。我经常使用调用层次结构和类型层次结构视图

这些是非常一般的指导方针,最终是你花在项目上的时间让你理解它

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