大数据经典论文解读
徐文浩
bothub 创始人
13844 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
大数据经典论文解读
15
15
1.0x
00:00/00:00
登录|注册

16 | 从Dremel到Parquet(一):深入剖析列式存储

你好,我是徐文浩。
在解读 Hive 论文的过程中,我们看到 Hive 已经通过分区(Partition)和分桶(Bucket)的方式,减少了 MapReduce 程序需要扫描的数据,但是这还远远不够。
的确,MapReduce 有着非常强的伸缩性,架起一个 1000 个节点的服务器毫无压力。可 MapReduce 的缺陷也很明显,那就是它处理数据的方式太简单粗暴,直接就是把所有数据都扫描一遍。
要知道,通常来说,我们的 Hive 表也好,或者以 Thrift 序列化后存放到 HDFS 上的日志也好,采用的都是“宽表”,也就是我们会把上百个字段都直接存放在一张表里。但是实际我们在分析这些日志的时候,往往又只需要用到其中的几个字段。
比如,我们之前的日志,有超过 100 个字段,但是如果我们想要通过 IP 段和 IP 地址,查看是否有人刻意刷单刷流量的话,我们可能只需要 IP 地址等有限的 4~5 个字段。而如果这些字段在 Hive 里并不是一个分区或者分桶的话,MapReduce 程序就需要扫描所有的数据。这个比起我们实际需要访问的数据,多了数十倍。
但是,我们又不可能对太多字段进行分区和分桶,因为那样会导致文件数量呈几何级数地上升。就以上节课的例子来说,如果我们要在国家之后再加上“州”这个维度,并进行分区,那么目录的数量会增长 50 倍(以美国为例有 50 个州)。而如果我们再在时间维度上加上一个“小时”的数据维度,那么目录的数量还要再增长 24 倍。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了列式存储的技术特点和优势,重点介绍了Dremel论文中对于解决嵌套结构和可选字段问题的解决方案。传统数据处理方式的性能浪费问题得到指出,而列式存储通过按列存储数据,实现针对性读取所需字段,减少数据访问量,提高性能的优势得到详细解释。Dremel通过Repetition Level和Definition Level两个字段,巧妙地在拆分数据成列存储后,能够重新将其组装起来,100%还原原始数据。这种方式能够减少需要扫描的数据,提升数据分析效率。文章还提到Dremel在数据模型和工程上的亮点,以及对数据进行压缩的压缩率提升。整体而言,本文通过深入剖析列式存储的技术特点,为读者提供了对该领域的全面了解和学习指引。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • wd
    试着回答一下这个思考题:"为什么采用列存储之后,数据的压缩率也能提升呢?" 一些取值比较连续分布的数据,在使用列存储以后,可以利用 runlength encoding 类似的压缩方法大大提高压缩率。因为这些数据的值会在一个比较小的区间范围内变动,存储的时候只要存delta就行了;一个通常64-bit的数值的delta可能只需要4个bit来存。
    2021-10-29
    14
  • 在路上
    徐老师好,在《数据密集型计算系统》第3章介绍了列式存储,当数据按列存储时,可以采用位图编码来对数据压缩。用一个数组 A 保存所有出现的值,列存储中的值用位图表示,比如某行某列的值为00001000,表示这个值对应数值 A 中下标为4的值(起始下标为0)。所有的列的值都是都是差不多的数字,放在一起可以进一步压缩。这样一来,数据的压缩率就提升了。
    2021-11-02
    1
    5
  • Steven
    列存储压缩率上升应该是相同数据类型的每一列都可以提高压缩率
    2021-10-29
    2
  • 阿橦木
    code: en-us country:us在数据结构中的位置都一样,为何d值一个是2一个是3呢?
    2021-10-29
    4
    1
  • Eternal
    一列的值相似度很高,比如姓名,长度,和名字重复率很高,二次编码可以降低很多空间
    2023-03-22归属地:重庆
  • cpzhao
    我们用来分析的列存储数据,可以直接通过一个 MapReduce 程序,进行数据格式转换来生成。 这句有人能解释下吗,没明白写入的时候怎么弄,是存两份数据,用一个mapreduce异步转成列式存储?
    2022-12-09归属地:广东
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部