【发布时间】:2017-02-20 12:55:01
【问题描述】:
我有以下架构
{"namespace": "POS.avro",
"type": "record",
"name": "POS",
"fields": [
{"name": "TransactionID", "type": "int"},
{"name": "Date", "type": "long"},
{"name": "Invoice", "type": "string"},
{"name": "StoreId", "type": "string"},
{"name": "StoreName", "type": "string"},
{"name": "SalesMan", "type": "string"},
]
}
我正在用 Java 创建通用记录以将其附加到 Avro 文件中
DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<GenericRecord>(schema);
File avroFile = new File(avroFileName);
DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<GenericRecord>(datumWriter);
dataFileWriter.create(schema, avroFile);
// Instantiating the GenericRecord class.
GenericRecord salesRecord = new GenericData.Record(schema);
String key = "Product Name";
Field field = schema.getField(key);
if (field == null) {
salesRecord.put(key, "some value");
}
dataFileWriter.append(salesRecord);
我正在尝试用一些值附加不存在的字段,但得到 AvroRuntimeException。
我们可以附加不存在的字段吗?如果是,使用 Java 附加此类字段的方法是什么?
【问题讨论】: