parquet存储linux文件,第13章 关于Parquet-列存储模式

简介

Apache Parquet 是一种能够有效存储嵌套数据的列存储格式。(列式存储格式在文件大小和查询性能上表现优秀) Parquet 的突出贡献在于能够以真正的列式存储格式来保存具有深度嵌套结构的数据。 参考博客-简书

数据模型

原子类型

类型

描述

boolean

二进制值

int32

32位有符号整数

int64

64位有符号整数

int96

96位有符号整数

float

(32位)IEEE754单精度浮点数

double

(64位)IEEE754单精度浮点数

binary

8位无符号字节序列

fixed_len_byte_array

固定数量的8位无符号字节

一个简单的Parquet模式:

message WeatherRecord{

required int32 year;

required int32 temperature;

required binary stationId (UTF-8);

}

parquet 的原子类型不包括字符串类型。required binary stationId (UTF-8); 表示字符串

逻辑类型

逻辑类型注解描述模式示例
UTF-8 由UTF-8字符组成的字符串,可用于
注解binary
message m {
   required binary a (UTF-8);
}
ENUM命名值的集合,可用于binary message m {
   required binary a (ENUM);
}
DECIMAL
(precision,scale)
任意精度的有符号小数,可用于注解
int32、int64、binary或fixed_len_byte_array
message m {
   required int32 a (DECIMAL(5,2));
}
DATE 不带时间的日期值,可用于注解int32.
用Unix元年(1970年1月1日)以来的天
数表示
message m {
   required int32 a (DATE);
}
LIST一组有序的值,可用于注解group message m {
   required group a (LIST){    required group list{
   required int32 element; } } }
MAP 一组无序的键-值对,可用于注解group message m {
   required group a (MAP){    required group key_value{
   required binary key (UTF-8);    optional int32 value;
} } }

Parquet文件格式

Paruet文件由一个文件头,一个或多个紧随其后的文件块,以及一个用于结尾的文件尾构成。文件头中仅包含一个称为PAR1的4个字节数字,它用来识别整个Parquet文件格式。文件的所有元数据都被保存在文件尾中。

03ec2235a19d73e7e4ae1bae5f2dbd2f.png

Parquet的配置

在设置文件块的大小时需要折中考虑扫描率与内存的使用。较大的文件块包含较多的行,因此扫描效率更高。同时也可以提高顺序I/O操作的效率(因为在设置列块时的额外开销比较少)。但是,每个文件块在读/写操作时都需要缓存在内存中,这个限制使得文件块不能太大。默认的文件块为128MB.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值