Avro模式解析器忽略了byte类型的逻辑类型。
创始人
2024-11-13 07:30:17
0

Avro模式解析器通常会忽略byte类型的逻辑类型(如"date"、"time-millis"和"decimal"等),并将其作为原始的byte类型处理。因此,如果您在定义schema时使用了byte类型的逻辑类型,您需要在读取或写入数据时手动处理这些逻辑类型。以下是一个示例:

使用带有byte类型的逻辑类型的schema:

{ "type": "record", "name": "example", "fields": [ { "name": "my_decimal", "type": { "type": "bytes", "logicalType": "decimal", "precision": 4, "scale": 2 } } ] }

读取和写入数据时手动处理逻辑类型:

import org.apache.avro.Conversions.DecimalConversion; import org.apache.avro.LogicalTypes; import org.apache.avro.Schema; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericRecord; import org.apache.avro.generic.GenericData.Record; import org.apache.avro.io.DatumReader; import org.apache.avro.io.DatumWriter; import org.apache.avro.io.Decoder; import org.apache.avro.io.DecoderFactory; import org.apache.avro.io.Encoder; import org.apache.avro.io.EncoderFactory; import org.apache.avro.specific.SpecificDatumReader; import org.apache.avro.specific.SpecificDatumWriter; import org.apache.avro.util.Utf8;

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.nio.ByteBuffer;

public class AvroExample {

// deserialize bytes to record
public static Record deserialize(byte[] bytes, Schema schema) throws IOException {
    DatumReader datumReader = new SpecificDatumReader<>(schema);
    Decoder decoder = DecoderFactory.get().binaryDecoder(bytes, null);
    Record record = datumReader.read(null, decoder);
    return record;
}

// serialize record to bytes
public static byte[] serialize(Record record, Schema schema) throws IOException {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    Datum

相关内容

热门资讯

详细说明!边锋老友棋牌免费挂,... 详细说明!边锋老友棋牌免费挂,德扑最新发牌程序有规律,详细有挂(有挂详情)-哔哩哔哩,支持语音通讯、...
必备科技(wepoke辅助透视... 必备科技(wepoke辅助透视)外挂透明挂辅助软件(系统)发牌规律(2023已更新)(哔哩哔哩);科...
传递经验!边锋干瞪眼辅助器,德... 1、传递经验!边锋干瞪眼辅助器,德扑之星开挂透视,详细有挂(有挂技巧)-哔哩哔哩2、进入游戏-大厅左...
透视存在!雀神小程序大数据(辅... 透视存在!雀神小程序大数据(辅助挂)太坑了竟然真的有挂(有挂方法)-哔哩哔哩1、让任何用户在无需AI...
透视科技!边锋干瞪眼辅助器(w... 透视科技!边锋干瞪眼辅助器(wepokE),太坑了确实是真的有挂(有挂教学)-哔哩哔哩;亲真的是有正...
玩家爆料!边锋杭麻圈辅助,德州... 玩家爆料!边锋杭麻圈辅助,德州软件有挂,详细有挂(有挂介绍)-哔哩哔哩;亲真的是有正版授权,小编(透...
透视计算(fishpoker ... 透视计算(fishpoker app)外挂透明挂辅助脚本(系统)透视辅助(2022已更新)(哔哩哔哩...
技术分享!雀神小程序辅助app... 技术分享!雀神小程序辅助app(透视)太坑了其实是真的有挂(有挂总结)-哔哩哔哩是一款可以让一直输的...
透视玄学!边锋杭麻圈有挂,微乐... WePoker透视辅助工具核心要点解析‌,透视玄学!边锋杭麻圈有挂,微乐扑克辅助器免费版,详细有挂(...
一分钟揭秘(德扑之星软件)外挂... 一分钟揭秘(德扑之星软件)外挂透明挂辅助插件(软件)德州ai机器人(2024已更新)(哔哩哔哩)是由...