Pregunta rellenando registros anidados en Avro utilizando un GenericRecord
Supongo que tengo el siguiente esquema:
{
"name" : "Profile",
"type" : "record",
"fields" : [
{ "name" : "firstName", "type" : "string" },
{ "name" : "address" , "type" : {
"type" : "record",
"name" : "AddressUSRecord",
"fields" : [
{ "name" : "address1" , "type" : "string" },
{ "name" : "address2" , "type" : "string" },
{ "name" : "city" , "type" : "string" },
{ "name" : "state" , "type" : "string" },
{ "name" : "zip" , "type" : "int" },
{ "name" : "zip4", "type": "int" }
]
}
}
]
}
Estoy usando un registro genérico para representar cada perfil que se crea. Para agregar un nombre, es fácil hacer lo siguiente:
Schema sch = Schema.parse(schemaFile);
DataFileWriter<GenericRecord> fw = new DataFileWriter<GenericRecord>(new GenericDatumWriter<GenericRecord>()).create(sch, new File(outFile));
GenericRecord r = new GenericData.Record(sch);
r.put(“firstName”, “John”);
fw.append(r);
Pero, ¿cómo establecería la ciudad, por ejemplo? ¿Cómo represento la clave como una cadena que el método r.put puede entender?
Gracia