模块 writer

模块 writer 

源代码
展开描述

用于将 Arrow 数组写入 Avro 数据的核心功能

实现了主写入器接口和记录编码逻辑。用于 arrow-avro crate 的 Avro 写入器实现。

§概述

使用此模块将 Arrow RecordBatch 值序列化为 Avro。支持两种输出格式:

  • AvroWriter — 写入一个 对象容器文件 (OCF):一个自描述文件,包含头部(模式 JSON + 元数据)、可选压缩、数据块和同步标记。请参阅 Avro 1.11.1 “对象容器文件”。 https://avro.apache.org/docs/1.11.1/specification/#object-container-files
  • AvroStreamWriter — 写入一个 单一对象编码 (SOE) 流(“数据”字节),不带任何容器帧。当模式是带外已知(即通过注册表)并且您想要最小开销时,这很有用。

§您应该使用哪种格式?

§选择 Avro 模式

默认情况下,写入器将您的 Arrow 模式转换为 Avro(包括顶级记录名称)。如果您已经有一个 Avro 模式 JSON 并希望原样使用,请在构造写入器之前将其放入 Arrow 模式元数据中的 avro.schema 键下。构建器将使用该模式而不是生成新模式(除非在选项中将 strip_metadata 设置为 true)。

§压缩

对于 OCF,您可以通过 WriterBuilder::with_compression 启用压缩编解码器。所选的编解码器将写入文件头并用于后续块。SOE 流写入不应用容器级压缩。


模块§

encoder 🔒
RecordBatch 编码为 Avro 二进制格式。用于 Arrow 类型的 Avro 编码器。
format
不同 Avro 容器文件格式的逻辑。用于 Arrow 的 Avro 写入器格式。

结构体§

Writer
通用 Avro 写入器。
WriterBuilder
构建器,用于配置和创建 Writer

类型别名§

AvroStreamWriter
Avro 单一对象编码 流写入器的别名。
AvroWriter
Avro 对象容器文件 写入器的别名。