学习 Parquet(二):Java API

栏目: Java · 发布时间: 6年前

内容简介:编辑 pom.xml 文件,添加依赖:Parquet 是结构化的文件结构,需要先定义 Schema。以定义Schema 支持的类型,定义在枚举

依赖

编辑 pom.xml 文件,添加依赖:

<dependency>  
  <groupId>org.apache.parquet</groupId>
  <artifactId>parquet-avro</artifactId>
  <version>1.10.1</version>
</dependency>

写入

Schema

Parquet 是结构化的文件结构,需要先定义 Schema。以定义 id long, name string 结构的 Schema 为例:

List<Schema.Field> 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; }
}

其中, RECORDENUMARRAYMAPUNIONFIXED 是复合类型, STRINGBYTESINTLONGFLOATBOOLEANNULL 是基本类型。

Writer

有了 Schema 之后,就可以写入文件了:

ParquetWriter<GenericData.Record> writer = AvroParquetWriter.<GenericData.Record>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<GenericData.Record> reader = AvroParquetReader.<GenericData.Record>builder(path).build();  
GenericData.Record record = reader.read();  
reader.close();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机网络

计算机网络

Andrew S. Tanenbaum / 潘爱民 / 清华大学出版社 / 2004-8-1 / 60.00元

《计算机网络(第4版)》全书按照网络协议模型(物理层、数据链路层、介质访问控制子层、网络层、传输层和应用层),自下而上系统地介绍了计算机网络的基本原理,并给出了大量实例。在讲述各网络层的同时,还融合进了近年来迅速发展起来的各种网络技术,如Internet、SONET、A DSL、CDMA、WLAN和蓝牙等。另外,针对当前计算机网络的发展现状以及计算机安全的重要性,本书用了一整章的篇幅对计算机安全进......一起来看看 《计算机网络》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具