avro文件是常用的一種文件類型,它跟json文件一樣存儲了文件的元信息,它可以方便的進行序列化和反序列化。
寫avro文件
寫avro文件主要包括三步,第一步創建avro文件的schema,第二步創建avro文件的輸出,第三步將要寫入avro文件的數據按照schema寫出去。
1.創建schema,可以讀取文件創建schema也可以自己寫一個字符串,然后通過Schema.parse(sch);生成schema,如下圖所示:
2.創建avro文件的輸出,使用如下代碼創建輸出,也可以將out改為file類型的文件,不過考慮到使用的廣泛性,這里以輸入輸出流為例。
3.寫數據,按照schema的規范,將數據寫出,如下圖所示:
讀取avro文件
讀取avro文件分為三步,第一步創建avro文件的讀取,第二步獲得avro文件的schema,第三步根據獲得的schema讀取avro文件的記錄。
1.創建avro文件讀取,使用DataFileStream來創建讀取,代碼如下:
DataFileStream<GenericRecord> reader = new DataFileStream<>(in, new GenericDatumReader<>())
其中in為avro文件的文件流。
2.獲得avro文件的schema,使用如下代碼獲取schema。
List<Schema.Field> list = reader.getSchema().getFields();
3.第三步,根據schema讀取所有記錄,如下圖所示:
最終builder為avro文件的所有記錄。