jjzjj

CodedInputStream

全部标签

java - 使用 Protocol Buffer 进行二进制日志记录

我们正在考虑将ProtocolBuffers用于二进制日志记录,因为:这就是我们对对象进行编码的方式相对紧凑,读写速度快等。也就是说,我们应该如何去做并不明显,因为API倾向于专注于创建整个对象,因此将DataLogEntry列表包装为DataLogFile中的重复字段将是您在消息传递中所做的术语,但我们真正想要的只是能够写入然后读取整个DataLogEntry,将其附加到文件末尾。我们这样做遇到的第一个问题是这样做(在测试中:FileInputStreamfileIn=newFileInputStream(logFile);CodedInputStreamin=CodedInputS

hadoop 协议(protocol)消息太大。可能是恶意的。使用 CodedInputStream.setSizeLimit() 增加大小限制

我在数据节点的日志中看到了这一点。这可能是因为我正在将500万个文件复制到HDFS中:java.lang.IllegalStateException:com.google.protobuf.InvalidProtocolBufferException:Protocolmessagewastoolarge.Maybemalicious.UseCodedInputStream.setSizeLimit()toincreasethesizelimit.atorg.apache.hadoop.hdfs.protocol.BlockListAsLongs$BufferDecoder$1.next