简介
CarbonData是使用先进的列式存储,索引,压缩和编码技术,以提高计算效率及更快交互式查询一个新的Hadoop本地文件格式,反过来这将帮助更快的查询超过PB级的数据。
特征
CarbonData文件格式列式存储在HDFS中,它有许多功能,包括一个现代化的列式格式有,如分割,压缩模式,复杂的数据类型等,并CarbonData具有以下独特的功能:
- 与索引一起存储的数据:它可以显著加快查询性能并减少I / O扫描和CPU资源,查询中包含过滤。 CarbonData索引由索引的多个级别,处理框架可以利用这个索引,以减少需要来安排和处理的任务,它也可以跳跃扫描更精细的晶粒单元(称为blocklet)而不是扫描整个文件。
- 可操作的编码数据:通过支持高效的压缩和全球编码方案,可以查询压缩/编码的数据,数据可以只是将结果返回给该用户,这个被称为late materialized。
- 列组:允许多个列组成,将被存储为行格式列组。这样可以减少在查询时行重建成本。
- 支持各种场景及数据格式:像OLAP式的交互式查询,顺序访问,随机存取等。
文件格式
一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。
环境配置
预先准备:
jdk(7~8)
scala(2.10)
Thrift(0.9.3)
Maven(3.3~)
git,类unix系统
hadoop(2.6~)
spark(1.5~)
hive
IDEA or Eclipse
编译CarbonData
如果hadoop版本不是2.2.0或者2.7.2的需在pom.xml中指名hadoop版本,比如我用的hadoop版本是2.6的则在profiles中添加
然后
编译完成后,assembly/target/scala-2.10文件夹下应该有CarbonData的jar包
将此包复制到Spark目录下的lib文件夹
cp -r processing/carbonplugins ${SPARK_HOME}/carbondata/ 注:carbonplugins中应该有.kettle的隐藏文件夹
开发环境配置及测试
配置前确保正确安装了Hive
这里介绍IDEA的配置方式
在idea中安装scala的插件,新建一个工程CarbondataDemo,在工程中导入:编译好的CarbonData的jar包,spark目录lib文件夹下面的datanucleus开头的3个jar包及spark-assembly包.这样就导入了所需依赖.
新建一个Demo1.scala,在同级目录下拷入hive-site.xml,在Demo1.scala类中写入如下测试代码:
|
|
执行代码后应该在storePath目录下的default数据库中发现新建的test表,test表下面会有Metadata(元数据存放)
大概目录结构如下
|
|
在hive中default数据库也能查询到test表信息
表创建好后开始加载信息,首先创建一个csv文件,carbondata加载数据文件为csv格式
|
|
输入上面测试数据,数据间按照英文逗号分割,这是默认的分割符,如果使用其它分割符需在load语句后面用DELIMITER字段人为指定分割符
加载数据:
|
|
加载成功后可以在/usr/carbondata/store/default/test/目录下发现新增Fact文件,目录结构如下:
|
|
Part为分区信息,Segment为分割文件,一般load一次文件生成一个Segment文件,后面的carbonindex为索引文件,carb为真实数据存放文件
查询数据:
|
|
如果能查询到数据则carbondata开发环境配置成功
持续更新中~~