分为specific和generic,先来specific版本的:
private static <T> void serialize(Schema schema, File file, List<T> records) {
SpecificDatumWriter<T> specificDatumWriter = new SpecificDatumWriter<>();
DataFileWriter<T> dataFileWriter = new DataFileWriter<>(specificDatumWriter);
try {
dataFileWriter.create(schema, file);
for (T record : records) {
dataFileWriter.append(record);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
dataFileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static <T> void deserialize(Schema schema, File file) {
SpecificDatumReader<T> specificDatumReader = new SpecificDatumReader<>(schema);
DataFileReader<T> dataFileReader = null;
try {
dataFileReader = new DataFileReader<>(file, specificDatumReader);
T record = null;
while (dataFileReader.hasNext()) {
record = dataFileReader.next(record);
System.out.println(record);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (dataFileReader != null) {
try {
dataFileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}