Parquet 写数据过程及源代码分析

本文深入分析了Parquet写数据的过程,详细介绍了涉及的主要类,包括压缩操作、Page组织、ColumnWriter和PageWriter的角色。还探讨了ColumnWriterStore、Store和RowGroup的关系,以及如何通过RecordConsumer和GroupWriter协调数据写入。流程图展示了数据在内存中的写入路径。
摘要由CSDN通过智能技术生成

Parquet写数据过程及源代码分析


本文主要从parquet写数据的角度进行分析,主要涉及parquet从拿到数据模型到最终将一条记录经过计算、编码、压缩等过程写入内存的过程(暂时没有包括写入文件的过程,后续补充)。主要从以下几个方面进行介绍:
  • 写流程涉及的类
  • 写数据的过程

先看看在这个过程中涉及的类及其作用

这里介绍的类都是一些基类,具体的实现类大家可以去看里面具体的实现类...

valueWriter: 这个类是一个父类,主要涉及相应的压缩操作,算是在写入文件之前最后调用的类。这个类不需要知道自己的输入具有什么含义,只需要按照相应的规则对输入的byte进行压缩即可,然后将输出结果保存在自己维护的一个ByteArrayOutputStream里面。

pageWriter: 从类名可以直接看出,这个类是将数据按照page进行组织的一个类。它本身不涉及任何编码与压缩操作,它的作用是与valueWriter相配合,当valueWriter中的数据量达到一定阈值的时候,系统会将其中的数据写入到pageWriter中,具体后面会给出解析。

ColumnWriter: 这个类是对一列进行写入操作的类,这个类包含一个pageWriter和三个valueWriter,三个valueWriter的作用分别是写入Value、Repeation level 、Definition l

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值