天天看点

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