只是想知道并检查avro-mapred库中提供的AvroKey和AvroValue类是否为Writable? 我打算重用这些对象来节省mapreduce工作中的一些内存。
答案 0 :(得分:0)
没有。它们只是包装类。您可以通过修改基础数据来节省内存。
GenericData.Record record = new GenericData.Record(schema);
record.put("name", "Bob");
record.put("age", 10);
AvroKey<GenericData.Record> avroKey = new AvroKey<>(record);
context.write(avroKey, NullWritable.get());
record.put("name", "Mike");
record.put("age", 11);
context.write(avroKey, NullWritable.get());
虽然可变对象是bug的常见来源。考虑在重构之前和之后测量内存消耗。