天天看點

parquet java_學習 Parquet(二):Java API

依賴

編輯 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();