Avro模式在模式定义中未考虑别名。
创始人
2024-11-13 07:30:33
0

Avro模式别名问题可能出现在读取或写入数据时。当定义别名时,需要考虑在模式读取和写入时自动将别名解析为正确的名称。

例如,有以下模式定义和别名:

{
  "type": "record",
  "name": "User",
  "aliases": ["Person"],
  "fields": [
    {"name": "first_name", "type": "string"},
    {"name": "last_name", "type": "string"}
  ]
}

当使用别名进行写入数据时,使用别名进行解析将导致模式错误。正确的解决方法是使用 Avro API 中的相关函数进行解析:

// 读取模式
Schema.Parser parser = new Schema.Parser();
Schema schema = parser.parse("{\"type\": \"record\", \"name\": \"User\", \"aliases\": [\"Person\"], \"fields\": [{\"name\": \"first_name\", \"type\": \"string\"}, {\"name\": \"last_name\", \"type\": \"string\"}]}");
schema.getTypes().forEach(System.out::println); // 通过列表显示模式

// 构造记录
GenericRecordBuilder builder = new GenericRecordBuilder(schema);
GenericRecord record = builder.set("first_name", "John").set("last_name", "Doe").build();

// 写入文件
File file = new File("user.avro");
DatumWriter writer = new GenericDatumWriter<>(schema);
DataFileWriter dataFileWriter = new DataFileWriter<>(writer);
dataFileWriter.create(schema, file);
dataFileWriter.append(record);
dataFileWriter.close();

//读取文件
DatumReader reader = new GenericDatumReader<>();
DataFileReader dataFileReader = new DataFileReader<>(file, reader);
GenericRecord userRecord = null;
while(dataFileReader.hasNext()) {
  userRecord = dataFileReader.next(userRecord);
  String firstName = userRecord.get("first_name").toString();
  String lastName = userRecord.get("last_name").toString();
  System.out.printf("Reading user %s %s\n", firstName,

相关内容

热门资讯

透视真的!wePokE软件透明... 相信很多朋友都在电脑上玩过wePokE吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带来...
一分钟了解(德扑安卓)外挂透明... 一分钟了解(德扑安卓)外挂透明挂辅助器(辅助挂)透视辅助(确实有挂)-哔哩哔哩;人气非常高,ai更新...
玩家实测(智星德州菠萝)外挂透... 玩家实测(智星德州菠萝)外挂透明挂辅助app(透视)微扑克教程(2023已更新)(哔哩哔哩)是一款可...
避坑细节!aa扑克伙牌(wep... 避坑细节!aa扑克伙牌(wepoKE)外挂透明挂辅助软件(辅助挂)解密教程(有挂猫腻)-哔哩哔哩1、...
两分钟了解(德扑ai智能)外挂... 两分钟了解(德扑ai智能)外挂透明挂辅助脚本(辅助挂)原来真的有挂(攻略教程)(哔哩哔哩)关于德扑a...
总算了解(WPK必备)外挂透明... 总算了解(WPK必备)外挂透明挂辅助器安装(透视)果真是真的有挂(线上教程)(哔哩哔哩)是一款可以让...
新手必备(aaPOKER)外挂... 新手必备(aaPOKER)外挂透明挂辅助器(辅助挂)果真是真的有挂(新2024教程)(哔哩哔哩);1...
透视透明(德扑ai助手)外挂透... 透视透明(德扑ai助手)外挂透明挂辅助神器(辅助挂)的确是真的有挂(第三方教程)(哔哩哔哩)是一款可...
三分钟了解(Wepoke俱乐部... WePoker透视辅助版本稳定性对比与推荐‌:三分钟了解(Wepoke俱乐部)外挂透明挂辅助工具(透...
专业讨论(德扑之星埋牌)外挂透... 专业讨论(德扑之星埋牌)外挂透明挂辅助器安装(透视)竟然是真的有挂(wpk教程)(哔哩哔哩);玩家必...