gpt4 book ai didi

java - Avro:重用解码器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:36 24 4
gpt4 key购买 nike

在定义要提供给 DatumReader 类的解码器时,可以选择重用解码器,如下所示。如文档中所述,解码器类是不可变的且线程安全的,因此重用它确实有意义。最佳做法是什么,是重用解码器吗?如果我们每次尝试解码 Avro 负载时都创建解码器,是否会有性能开销?

DatumReader<T> reader = new ReflectDatumReader<>(writerSchema, readerSchema);
// Second argument is a decoder to be reused
DecoderFactory.get().binaryDecoder(record, null);
reader.read(null, binaryDecoder);

最佳答案

这种优化应该不是必需的,而且实际上可能不会提高性能。如果您观察到其他情况,请告诉我们。

基本上,作为工作描述的一部分,编码器是在管道提交期间创建和序列化的。它在每个后端被反序列化以创建给定工作单元的实例。这些工作单元足够大,不应该创建大量的编码器,所以它不应该是一个性能问题。

此外,AvroCoder 序列化模式,因此反射不会执行多次。此外,仅共享实例(如所描述的)实际上不会导致反序列化实例被共享。

关于java - Avro:重用解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com