Parquet格式

Parquet格式

参考链接:

http://lvheyang.com/wp-content/uploads/2016/02/%E5%88%97%E5%BC%8F%E5%AD%98%E5%82%A8%E4%B8%8EParquet%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E4%BA%AB-2.pdf

https://www.jianshu.com/p/b823c727fe46

https://blog.csdn.net/bhq2010/article/details/43318549

https://www.cnblogs.com/ulysses-you/p/7985240.html

1 Schema

Parquet 采用了一种嵌套的文件格式,简单理解为它的数据结构是树状层层嵌套的,类似于Json那种可以嵌套的格式。逻辑上,他的数据不是扁平的,有些字段可有可无。

2 数据转换

对于内存中的其他数据结构,存储时会通过特定的转换器转换为Parquet的存储对象。

3 group 分割

表被横向分割成多个行组,再存储为列式格式。

不同的字段是分开存储的,一个字段有一个column chunk,它包含了多个page,page是最小的压缩单元,也是最小的IO单元。

4 数据缓存

写入缓存时以groupsize为准。

groupsize是Mapreduce能够处理的最小单元。

读数据是最小可读单个page。

5 设置参数

Impala中可以设置文件的大小;

set parquet.file.sieze=1G(这是默认值);

parquet参数:

#压缩格式

#parquet.compression=snappy;  

#parquet.block.size=33554432(byte,内存中group的buffersize,不能大于hdfs的dfs.block.size)

#parquet.writer.max-paddin=2m

等同于row  group 大小,paddin size是blocksize的最小值,cdh默认8M。

#parquet.page.size(默认为1m,设置大是,减少了读取的IO,但会影响压缩效率)

#parquet.enable.dictionary=true

#parquet.dictionary.page.size=1048576

默认为true, 是否启用dictionary编码;默认大小与page.size相同,为1M。dictionary创建时会占用较多的内存。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_32555899/article/details/82113356
今日推荐