依賴
編輯 pom.xml 檔案,添加依賴:
org.apache.parquet
parquet-avro
1.10.1
寫入
Schema
Parquet 是結構化的檔案結構,需要先定義 Schema。以定義id long, name string
結構的 Schema 為例:
List fields = new ArrayList<>(2);
fields.add(new Schema.Field("id", Schema.create(Schema.Type.LONG), "id", null));
fields.add(new Schema.Field("name", Schema.create(Schema.Type.STRING), "name", null));
Schema schema = Schema.createRecord(fields);
Schema 支援的類型,定義在枚舉org.apache.avro.Schema.Type
中:
public enum Type {
RECORD, ENUM, ARRAY, MAP, UNION, FIXED, STRING, BYTES,
INT, LONG, FLOAT, DOUBLE, BOOLEAN, NULL;
private String name;
private Type() { this.name = this.name().toLowerCase(Locale.ENGLISH); }
public String getName() { return name; }
}
其中,RECORD
、ENUM
、ARRAY
、MAP
、UNION
和FIXED
是複合類型,STRING
、BYTES
、INT
、LONG
、FLOAT
、BOOLEAN
和NULL
是基本類型。
Writer
有了 Schema 之後,就可以寫入檔案了:
ParquetWriter writer = AvroParquetWriter.builder(path)
.withSchema(schema)
.build();
GenericData.Record record = new GenericData.Record(schema);
record.put(0, 0);
record.put(1, "this is a test.");
writer.write(record);
writer.close();
讀取
ParquetReader reader = AvroParquetReader.builder(path).build();
GenericData.Record record = reader.read();
reader.close();