use of org.apache.avro.specific.SpecificDatumWriter in project crunch by cloudera.
the class AvroTypeSortTest method writeAvroFile.
private void writeAvroFile(List<Person> people, File avroFile) throws IOException {
FileOutputStream outputStream = new FileOutputStream(avroFile);
SpecificDatumWriter<Person> writer = new SpecificDatumWriter<Person>(Person.class);
DataFileWriter<Person> dataFileWriter = new DataFileWriter<Person>(writer);
dataFileWriter.create(Person.SCHEMA$, outputStream);
for (Person person : people) {
dataFileWriter.append(person);
}
dataFileWriter.close();
outputStream.close();
}
use of org.apache.avro.specific.SpecificDatumWriter in project camel by apache.
the class AvroDataFormat method marshal.
public void marshal(Exchange exchange, Object graph, OutputStream outputStream) throws Exception {
// the schema should be from the graph class name
Schema useSchema = actualSchema != null ? actualSchema : loadSchema(graph.getClass().getName());
DatumWriter<Object> datum = new SpecificDatumWriter<Object>(useSchema);
Encoder encoder = EncoderFactory.get().binaryEncoder(outputStream, null);
datum.write(graph, encoder);
encoder.flush();
}
use of org.apache.avro.specific.SpecificDatumWriter in project eiger by wlloyd.
the class SerDeUtils method serialize.
/**
* Serializes a single object.
* @param o Object to serialize
*/
public static <T extends SpecificRecord> ByteBuffer serialize(T o) throws IOException {
OutputBuffer buff = new OutputBuffer();
BinaryEncoder enc = new BinaryEncoder(buff);
SpecificDatumWriter<T> writer = new SpecificDatumWriter<T>(o.getSchema());
writer.write(o, enc);
enc.flush();
return ByteBuffer.wrap(buff.asByteArray());
}
use of org.apache.avro.specific.SpecificDatumWriter in project gora by apache.
the class SolrStore method getDatumWriter.
@SuppressWarnings("rawtypes")
private SpecificDatumWriter getDatumWriter(Schema fieldSchema) {
SpecificDatumWriter writer = writerMap.get(fieldSchema);
if (writer == null) {
// ignore dirty bits
writer = new SpecificDatumWriter(fieldSchema);
writerMap.put(fieldSchema, writer);
}
return writer;
}
use of org.apache.avro.specific.SpecificDatumWriter in project gora by apache.
the class AccumuloStore method put.
@Override
public void put(K key, T val) {
try {
Mutation m = new Mutation(new Text(toBytes(key)));
Schema schema = val.getSchema();
List<Field> fields = schema.getFields();
int count = 0;
for (int i = 0; i < fields.size(); i++) {
if (!val.isDirty(i)) {
continue;
}
Field field = fields.get(i);
Object o = val.get(field.pos());
Pair<Text, Text> col = mapping.fieldMap.get(field.name());
if (col == null) {
throw new GoraException("Please define the gora to accumulo mapping for field " + field.name());
}
switch(field.schema().getType()) {
case MAP:
count = putMap(m, count, field.schema().getValueType(), o, col, field.name());
break;
case ARRAY:
count = putArray(m, count, o, col, field.name());
break;
case // default value of null acts like union with null
UNION:
Schema effectiveSchema = field.schema().getTypes().get(firstNotNullSchemaTypeIndex(field.schema()));
// map and array need to compute qualifier
if (effectiveSchema.getType() == Type.ARRAY) {
count = putArray(m, count, o, col, field.name());
break;
} else if (effectiveSchema.getType() == Type.MAP) {
count = putMap(m, count, effectiveSchema.getValueType(), o, col, field.name());
break;
}
// continue like a regular top-level union
case RECORD:
final SpecificDatumWriter<Object> writer = new SpecificDatumWriter<>(field.schema());
final byte[] byteData = IOUtils.serialize(writer, o);
m.put(col.getFirst(), col.getSecond(), new Value(byteData));
count++;
break;
default:
m.put(col.getFirst(), col.getSecond(), new Value(toBytes(o)));
count++;
}
}
if (count > 0)
try {
getBatchWriter().addMutation(m);
} catch (MutationsRejectedException e) {
LOG.error(e.getMessage(), e);
}
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
}
Aggregations