Hadoop ApacheAvro-内部表示

Hadoop ApacheAvro-内部表示,hadoop,avro,parquet,Hadoop,Avro,Parquet,我正在学习ApacheAvro,我想知道它是如何在内部表示的。如果我要为同一个问题描述Apache Parquet,我可以说每个Parquet文件都由行组组成,每个行组包含列块,列块有多个编码不同的页面。最后,所有这些的元数据都存储在文件页脚上。Github及其官方Apache中清楚地记录了这种文件表示形式 为了找到与ApacheAvro相同的内部表示形式,我查阅了Github、ApacheAvro和Hadoop Financial一书以及更多在线教程等多个页面,但我找不到我想要的内容。我知道A

我正在学习ApacheAvro,我想知道它是如何在内部表示的。如果我要为同一个问题描述Apache Parquet,我可以说每个Parquet文件都由行组组成,每个行组包含列块,列块有多个编码不同的页面。最后,所有这些的元数据都存储在文件页脚上。Github及其官方Apache中清楚地记录了这种文件表示形式

为了找到与ApacheAvro相同的内部表示形式,我查阅了Github、ApacheAvro和Hadoop Financial一书以及更多在线教程等多个页面,但我找不到我想要的内容。我知道ApacheAvro是面向行的文件格式,每个文件都有模式以及文件中的数据。所有这些都很好,但我想知道如何进一步分解内部组织的数据,可能类似于RDBMS表的页面


非常感谢与此相关的任何指针。

Avro容器文件格式已在其文档中指定。如果你喜欢简洁,那么维基百科有一个更精辟的说法:

Avro对象容器文件包括:

  • 文件头,后跟
  • 一个或多个文件数据块
文件头包括:

  • 四个字节,ASCII“O”、“b”、“j”,后跟Avro版本号1(0x01)(二进制值0x4F 0x62 0x6A 0x01)
  • 文件元数据,包括架构定义
  • 此文件随机生成的16字节同步标记
对于数据块,Avro指定两种序列化编码:二进制和JSON。大多数应用程序将使用二进制编码,因为它更小更快。对于调试和基于web的应用程序,JSON编码有时可能是合适的

您可以根据它们的参考实现来验证这一点,例如从主
create
方法开始,然后查看
append(D datum)
方法


二进制对象编码在他们的文档中有描述。编码数据只是编码对象(或多个对象)的遍历,每个对象和字段都按照文档中的描述进行编码。

Thank you@jon hanson。这对我有帮助。很抱歉,我无法在他们的官方网站上找到这些信息。@VenkatesanMuniappan没问题,这就是StackOverflow的作用。感谢您的理解