Avro:是否有java实现来序列化不适合内存的大记录?

Avro:是否有java实现来序列化不适合内存的大记录?,java,memory,size,avro,Java,Memory,Size,Avro,我是avro的新手,正在尝试评估它作为hdfs文件内容容器的潜力。 我确实知道SequenceFile,但如果可能的话,我想要一种语言无关的文件格式 从JavaAPI来看,所有对象序列化似乎都发生在内存中,这似乎将潜在记录大小与可用内存量绑定在一起。是否还有我没有看到的其他java解决方案或实现 谢谢 我不知道有哪种序列化仅仅是在内存中进行的。它们都支持字节流API或类似的API。这适用于一次序列化小部分的情况,例如8KB。我认为我的问题可能是avro特有的。问题不在于写对象本身,而在于在写之前

我是avro的新手,正在尝试评估它作为hdfs文件内容容器的潜力。 我确实知道SequenceFile,但如果可能的话,我想要一种语言无关的文件格式

从JavaAPI来看,所有对象序列化似乎都发生在内存中,这似乎将潜在记录大小与可用内存量绑定在一起。是否还有我没有看到的其他java解决方案或实现


谢谢

我不知道有哪种序列化仅仅是在内存中进行的。它们都支持字节流API或类似的API。这适用于一次序列化小部分的情况,例如8KB。我认为我的问题可能是avro特有的。问题不在于写对象本身,而在于在写之前需要在内存中构造对象。@PeterLawrey现在你知道了一个;更严重的是,每条记录都必须放在内存中,不能进行部分/惰性/分块的读写。可用内存是一个严格的上限。如果你打算在Hadoop MR中使用它,它甚至比这更糟糕。Hadoop在编写一个文件时使用了各种ByteArrayOutputStream或buffer,这意味着你有2^31字节的限制,IIRC甚至比这更糟糕。@ClémentMATHIEU听起来很糟糕。甚至内置的序列化也是基于输入/输出流的。@PeterLawrey我们同意。容器包含零个或多个对象。这些对象可以是:基元类型、记录或数组。在Avro中,Java对象映射到。OP的问题包含单词record,没有复数形式,我想他想存储一个大对象。存储大量对象集合显然没有问题。