提问人:user_1357 提问时间:2/4/2019 更新时间:2/4/2019 访问量:260
Apache Beam/Dataflow:KVCoder 损坏用于解码的输入流
Apache Beam/Dataflow: KVCoder corrupting Inputstream for decode
问:
我有自定义对象:,我通过 Avro 提供了编码器:,。CustomKey
CustomValue
CustomKeyCoder
CustomValueCoder
由于我需要按 KV[CustomKey, CustomValue] 分组,所以我注册了 .自定义编码器将输入/输出流包装到数据输入/输出流,并使用 Avro Datum Writer/Reader。KVCoder.of(new CustomKeyCoder, new CustomValueCoder)
我遇到的问题是在 KVCoder 的解码中,当我们尝试解码我得到的值部分时。如前所述,解码的关键部分工作正常,当输入流传递到解码值时会引发错误。KVCoder 对键和值重用相同的输入流,我猜键解码会读取整个流。为什么会这样?Avro 的使用有问题吗?KV
Forbidden IOException when reading from InputStream
下面是上面要展示的一些代码:
//Coder
override def decode(inputStream: InputStream): CustomValue = {
val dataInputStream = new DataInputStream(inputStream)
val id = dataInputStream.readShort
underlying.decode(dataInputStream)
}
//Underlying
override def decode(inputStream: InputStream): CustomValue = {
val decoder = DecoderFactory.get().binaryDecoder(inputStream, null)
val record = datumReader.read(null, decoder)
CustomValue.decode(record)
}
答: 暂无答案
评论