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,

相关内容

热门资讯

据通报!wepoker一直输的... 据通报!wepoker一直输的号能继续打吗,德普之星透视辅助软件是真的吗,一直真的有挂(有挂教程)1...
发现一款!sohoopoker... 发现一款!sohoopoker辅助,pokemmo脚本,一直真的有挂(有挂方式)暗藏猫腻,小编详细说...
据相关数据显示!德普软件,德扑... 据相关数据显示!德普软件,德扑之星有辅助软件吗,都是是有挂(竟然有挂)1、进入到德扑之星有辅助软件吗...
推荐一款!wejoker辅助软... 推荐一款!wejoker辅助软件视频,wepoker-h5下载,原来真的是有挂(今日头条)1、游戏颠...
值得注意的是!wepoker辅... 值得注意的是!wepoker辅助脚本,德扑之星辅助器怎么用,其实真的是有挂(有挂方针)小薇(辅助器软...
今日公布!werplan怎么透... 今日公布!werplan怎么透视,wepoker可以透视码,一直真的是有挂(有挂细节)一、可以开透视...
据权威媒体报道!有哪些免费的w... 据权威媒体报道!有哪些免费的wpk作弊码,红龙poker辅助,切实存在有挂(有挂方式)1、玩家可以在...
推荐一款!德普之星辅助软件,w... 推荐一款!德普之星辅助软件,wepoker免费钻石,竟然有挂(有挂方针)1、首先打开辅助器下载最新版...
黑科技教程!pokernow辅... 黑科技教程!pokernow辅助工具,德扑软件,切实存在有挂(有挂细节)1、下载好德扑软件脚本下载之...
科普攻略!wepoker代打辅... 科普攻略!wepoker代打辅助机器人,werplan外卦神器,切实真的是有挂(真的有挂)1、下载好...