关于面试--【hive parquet数据格式内部结构】

1创建表

create table parquet_log(
  events string,
  header map<string,string>
)
STORED AS PARQUET;


CREATE TABLE dwt.tmp_detail_pc_channel Stored AS parquet AS select * form

2PARQUET

我们的开源项目 Parquet 是 Hadoop 上的一种支持列式存储文件格式,起初只是 Twitter 和 Coudera 在合作开发,发展到现在已经有包括 Criteo公司 在内的许多其他贡献者了. Parquet 用 Dremel 的论文中描述的方式,把嵌套结构存储成扁平格式。

尽管 Parquet 是一个面向列的文件格式,不要期望每列一个数据文件。Parquet 在同一个数据文件中保存一行中的所有数据,以确保在同一个节点上处理时一行的所有列都可用。Parquet 所做的是设置 HDFS 块大小和最大数据文件大小为 1GB,以确保 I/O 和网络传输请求适用于大批量数据(What Parquet does is to set an HDFS block size and a maximum data file size of 1GB, to ensure that I/O and network transfer requests apply to large batches of data)。

在成G的空间内,一组行的数据会重新排列,以便第一行所有的值被重组为一个连续的块,然后是第二行的所有值,依此类推。

为了在列式存储中可以表达嵌套结构,用叫做 definition level和repetition level两个值描述。分别表达某个值在整个嵌套格式中,最深嵌套层数,以及在同一个嵌套层级中第几个值。

Parquet 使用一些自动压缩技术,例如行程编码(run-length encoding,RLE) 和字典编码(dictionary encoding),基于实际数据值的分析。一当数据值被编码成紧凑的格式,使用压缩算法,编码的数据可能会被进一步压缩。Impala 创建的 Parquet 数据文件可以使用 Snappy, GZip, 或不进行压缩;Parquet 规格还支持 LZO 压缩,但是目前 Impala 不支持 LZO 压缩的 Parquet 文件。

除了应用到整个数据文件的 Snappy 或 GZip 压缩之外,RLE 和字段编码是 Impala 自动应用到 Parquet 数据值群体的压缩技术。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值