学习 Parquet(二):Java API

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

内容简介:编辑 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();

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

查看所有标签

猜你喜欢:

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

论因特网

论因特网

[美] 休伯特·L.德雷福斯 / 喻向午、陈硕 / 河南大学出版社 / 2015-5 / 32.00

本书是与日俱增的关于因特网利弊之文献的重要补充。 ——《哲学评论》 关于因特网种种承诺的一次清晰辨析……以哲学家的眼光审视一个影响我们所有人的问题。 ——《普遍存在》杂志 ……一场精心设计的论战……我们需要更多德雷福斯这样的老师,将网络融入依 然具有深邃人性的课程。 ——亚当•莫顿(出自《泰晤士报文学增刊》) 在互联网世界,不管你是菜鸟,还是浸淫其中已久—......一起来看看 《论因特网》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具