carbondata 介绍

1、为什么要使用carbondata?
CarbonData支持完整的标准SQL支持,以及多种分析场景的支持,“一份数据支持多种使用场景”,例如大规模扫描和计算的批处理场景,OLAP多维交互式分析场景,明细数据即席查询,主键低时延点查,以及对实时数据的实时查询等场景主要概括为一下几种

(1)支持海量数据扫描提取其中某些列;
(2)支持根据主键进行查找的低于秒级响应;
(3)支持海量数据进行交互式查询的秒级响应; 
(4)支持快速地抽取单独记录,并且从该记录中获取到所有列信息; 
(5)支持HDFS,可以与Hadoop集群进行很好的无缝兼容。
1
2
3
4
5
可以看出当前的很多大数据系统虽然都能支持各类查询场景,但他们都是偏向某一类场景设计的,在不是其目标场景的情况下要么不支持要么退化为全表扫描,所以导致为了应对批处理,多维分析,明细数据查询等场景,常常需要通过复制多份数据,每种场景要维护一套数据。CarbonData的设计初衷正是为了打破这种限制,做到只保存一份数据,最优化地支撑多种使用场景。
2、CarbonData基础特性
(1)数据及索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源;CarbonData的索引由多级索引组成,计算引擎可以利用这些索引信息来减少调度和一些处理的开销;扫描数据的时候可以仅仅扫描更细粒度的单元(称为blocklet),而不再是扫描整个文件;
(2)可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,更好的查询下推;
(3)列组:支持列组,并且使用行格式进行存储,减少查询时行重建的开销;
(4)多种使用场景:顺序存取、随机访问、类OLAP交互式查询等。
3、推荐场景:希望一份存储同时满足快速扫描,多维分析,明细数据查询的场景。在华为的客户使用案例中,对比业界已有的列存方案,CarbonData可以带来5~30倍性能提升。我们自己测试大约有5~6倍左右的提升。
4、文件格式介绍:
一个CarbonData文件是由一系列被称为blocklet组成的,除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。
当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。
每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据可以按列或者行的形式存储;数据既可以是单独的一列也可以是多列。文件中所有blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如图所示。

每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:
(1)Data Page:包含一列或者列组的编码数据;
(2)Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;
(3)RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用
————————————————
版权声明:本文为CSDN博主「微溪」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013181284/article/details/77574057

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值