前言
CarbonData 拥有不错的明细查询能力,比如简单的where条件过滤,性能大概是Parquet的20倍。数据的聚合分析方面,如果有不错的where过滤,则相当一部分查询也是快于Parquet的,并且拥有更少的Tasks数,这就意味着可以让你的Spark Query Service 有更好的并发能力。
查询和入库的性能,一般而言是都是抵触的,需要有一个较好的权衡。CarbonData 在这块和Parquet 有一定的差距。
环境
Spark 1.6.0 + CarbonData 1.0.0
你可以通过这篇文章的介绍 迅速搭建一个基于CarbonData存储,以Spark为计算引擎的 Rest Service 服务。
数据导入
我们尝试两个规模数据的导入:
1000万数据的导入
12亿数据的导入(原始表24亿)
Spark 版本为 CDH5.7 Spark 1.6.0 ,对应所有的配置参数:
--conf "spark.sql.shuffle.partitions=30" \
--master yarn-cluster \
--num-executors 12 \
--executor-memory 10G \
--executor-cores 1 \
--driver-memory 6G \
导入都是通过SQL完成,类似
insert into table select * from another table
CarbonData有较复杂的存储结构,需要构建字典以及MDK等,所以整个构建过程中,需要两个大阶段&#