Apache CarbonData 2.3.2 介绍与选型指南
Apache CarbonData 2.3.2 认知与选型:带内建索引的列式文件格式架构、Spark 集成、官方示例与 Parquet/ORC/Hudi 对比(官方资料溯源,查询日期 2026-10-18)
Apache CarbonData 2.3.2 介绍与选型指南
目标:基于官方官网、官方快速上手文档、Maven Central 与项目仓库联网溯源(查询日期 2026-10-18),完成 Apache CarbonData 最新稳定版的认知与选型评估。本文属认知篇(A1),关键论断均随文标注来源,不做本地安装实测;安装与运行实测请参见本专栏 B1 配套指南。
一、信息基准
1.1 查询日期与版本依据
- 查询日期:2026-10-18(本文所有版本号、发布状态与活跃度数据均以该日联网实查为准)。
- 本次介绍版本:Apache CarbonData 2.3.2(Maven Central
org.apache.carbondata:carbondata-core最新 release,2026-10-18 实查)。 - 版本依据交叉印证:
- Maven Central 元数据 2.3.2(lastUpdated 2026-03-24,即发布入库时间,2026-10-18 实查);
- 官方仓库 Git 标签
carbondata-parent-2.3.2(GitHub tags 流最新标签,2026-10-18 实查); - 官方下载页 https://carbondata.apache.org/download.html 同步提供 2.3.2 发行包与校验文件(2026-10-18 实查)。
- 文档基线说明:官网文档导航当前标注的文档版本最高为 2.2.0,2.3.x 的使用差异以官方仓库 release 说明为准(来源:官网文档导航,2026-10-18 实查)。
1.2 官方来源清单
| 来源 | 用途 | 地址 |
|---|---|---|
| 项目官网 | 定位与文档入口 | https://carbondata.apache.org/ |
| 官方下载页 | 版本在架与校验 | https://carbondata.apache.org/download.html |
| 官方快速上手指南 | 使用示例 | https://carbondata.apache.org/quick-start-guide.html |
| 官方 DDL/DML 文档 | 建表与数据管理 | https://carbondata.apache.org/ddl-of-carbondata.html |
| 官方代码仓库 | 源码与发布 | https://github.com/apache/carbondata |
| Apache 项目页 | 项目状态 | https://projects.apache.org/project.html?carbondata |
二、软件概述
本文介绍的是 Apache CarbonData 2.3.2:一种面向交互式查询加速的大数据文件格式,采用先进的列式存储、索引、压缩与编码技术提升计算效率,在 PB 级数据上可将查询速度提升一个数量级(来源:projects.apache.org 项目描述,2026-10-18 实查)。许可为 Apache License 2.0(来源:官网与官方仓库 LICENSE,2026-10-18 实查)。
CarbonData 2016 年进入 Apache 孵化器、2017 年毕业为顶级项目(来源:projects.apache.org 项目页,2026-10-18 实查)。它把「文件格式 + 内建索引 + 编解码」合为一体,使基于 Spark 的交互式分析无需额外索引系统即可获得扫描裁剪与下推能力,并可被 Spark、Presto、Hive 等引擎读取(来源:官方快速上手文档,2026-10-18 实查)。
它要解决的核心问题是:在通用大数据存储(HDFS/对象存储)之上,给出一种既压缩高效、又支持多维过滤裁剪的统一数据格式,减少「数据湖上的扫描放大」,让多引擎共享同一份可索引的列式数据。
三、核心架构
3.1 列式存储与索引一体化
CarbonData 文件在列存布局内融合多级索引:字典编码(dictionary encoding)、位图/倒排索引与块级统计裁剪结合,查询按过滤条件跳过无关数据块(来源:官网特性描述与官方文档,2026-10-18 实查)。
3.2 表结构与数据组织
- 建表以
STORED AS carbondata声明,表数据组织为 Block/Blocklet 层级,配合排序键优化扫描(来源:官方 DDL 文档与快速上手文档,2026-10-18 实查)。 - 数据加载(LOAD DATA)与常规 INSERT 均受支持(来源:官方快速上手文档,2026-10-18 实查)。
3.3 与执行引擎的集成方式
- Spark:通过
CarbonExtensions定制 SparkSession 的解析器、分析器、优化器与物理计划规则,使 Spark SQL CLI/Shell 直接支持 CarbonData 语法(来源:官方快速上手文档「Installing and Configuring CarbonData to run locally with Spark SQL CLI」,2026-10-18 实查)。 - 其他引擎:官方文档提供与 Presto、Hive 的集成指引(来源:官方快速上手文档目录,2026-10-18 实查)。
3.4 存储后端
官方文档明确支持对 HDFS、S3 与 Alluxio 的读写(来源:官方快速上手文档「CarbonData supports read and write with HDFS/S3/Alluxio」小节,2026-10-18 实查)。
四、功能特性
| 功能域 | 说明 | 来源 |
|---|---|---|
| 列式文件格式 | 面向交互式查询的列存布局与压缩编码 | projects.apache.org 描述 |
| 内建索引 | 字典编码、位图/倒排索引与块裁剪,减少扫描量 | 官网与官方文档 |
| 多引擎读取 | Spark 为主,Presto/Hive 集成指引齐备 | 官方快速上手文档 |
| Spark 无缝接入 | CarbonExtensions 一行配置启用 | 官方快速上手文档 |
| 多存储后端 | HDFS、S3、Alluxio 读写支持 | 官方快速上手文档 |
| 标准语法 | STORED AS carbondata 建表 + LOAD DATA/SELECT | 官方快速上手文档 |
💡 说明:上表来源前缀 https://carbondata.apache.org/ ,2026-10-18 实查。
五、快速上手
以下示例引自官方快速上手文档《Quick Start Guide》(来源:https://carbondata.apache.org/quick-start-guide.html ,2026-10-18 官方原文实查),本文不做本地实测。
- 启用 CarbonExtensions 并启动 Spark SQL CLI(官方原文):
./bin/spark-sql --conf spark.sql.extensions=org.apache.spark.sql.CarbonExtensions --jars <carbondata assembly jar path>
官方说明:Spark SQL CLI 通过 CarbonExtensions 定制 SparkSession 的 parser、analyzer、optimizer 与物理计划策略规则(适用于 Spark 2.3+ 版本)。
- 建表(官方原文):
CREATE TABLE IF NOT EXISTS test_table (
id string,
name string,
city string,
age Int)
STORED AS carbondata;
官方说明:CarbonExtensions 仅支持 STORED AS carbondata 与 USING carbondata 两种写法。
- 加载数据(官方原文):
LOAD DATA INPATH '/local-path/sample.csv' INTO TABLE test_table;
LOAD DATA INPATH 'hdfs://hdfs-path/sample.csv' INTO TABLE test_table;
insert into table test_table select '1', 'name1', 'city1', 1;
- 查询(官方原文):
SELECT * FROM test_table;
SELECT city, avg(age), sum(age)
FROM test_table
GROUP BY city;
💡 说明:官方快速上手文档同时提示其基线版本支持范围(文档原文注明「CarbonData supports Spark versions up to 2.4」,以官方文档为准);样例 CSV 的准备步骤见官方文档同页。
六、适用场景与限制
6.1 适用场景
- 以 Spark 为核心的大数据分析平台,交互式查询占比高、需要索引裁剪降低扫描成本。
- 多引擎共享同一份数据(Spark/Presto/Hive),希望格式自带索引而非另建索引服务。
- 数据落在 HDFS/S3/Alluxio,需要格式层压缩与编码优化的场景。
6.2 限制与注意
- 社区演进放缓:GitHub 星标约 1.5k,版本以年计的大版本为主(2.3.x 系列自 2023 年起持续补丁),新特性投入有限(来源:GitHub 徽章与 Maven Central 版本史,2026-10-18 实查)。
- 官网文档基线滞后于发行版(文档导航最高 2.2.0),2.3.x 细节需对照仓库与发布说明(来源:官网文档导航,2026-10-18 实查)。
- 新建数据湖表格式选型时,社区主流已转向 Parquet/ORC + Iceberg/Hudi 组合,CarbonData 的采用面相对收窄(该判断为选型观察,量化对比见第七章,2026-10-18 实查)。
七、同类选型对比
对比对象选取列式/湖仓数据格式同类方案:Parquet(parquet-mr)、ORC 与 Hudi(活跃度数据来源:GitHub 星标数经第三方徽章服务获取、Maven Central 与各官方发布渠道,2026-10-18 实查)。
| 维度 | Apache CarbonData 2.3.2 | Parquet(parquet-mr) | ORC | Apache Hudi |
|---|---|---|---|---|
| 类型定位 | 带内建索引的列式文件格式(面向交互查询) | 通用列式存储格式(事实标准) | 列式存储格式(强压缩/谓词下推) | 湖仓表格式(更新/事务/增量) |
| 许可 | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
| 社区活跃度 | GitHub 星标约 1.5k;2026-03 发 2.3.2 | GitHub 星标约 3.1k;Maven Central 最新 1.18.1 | GitHub 星标约 0.8k;2026-07-13 发 v2.3.1 | GitHub 星标约 6.3k;2026-10-17 发 1.1.2 |
| 版本节奏 | 年级别大版本 + 低频补丁 | 稳定迭代,随生态演进 | 半年级别版本 | 月度级活跃迭代(1.x 世代) |
| 兼容矩阵 | Spark 深度集成(CarbonExtensions),Presto/Hive 集成;HDFS/S3/Alluxio | 几乎所有大数据引擎原生支持 | Hive/Spark/Presto 原生支持 | Spark/Flink/Presto/Trino 等多引擎 |
| 典型取舍 | 格式内自带索引、交互查询裁剪强;引擎覆盖与生态演进有限 | 生态兼容性最强;无内建二级索引,需配合湖格式 | 压缩比与向量化读优秀;生态同样广泛 | 支持行级更新与事务;引入额外表格式复杂度 |
💡 选型建议:已有 Spark 平台且交互式多维过滤是主要瓶颈,可评估 CarbonData;新项目优先 Parquet/ORC 作为存储格式,需要更新/事务/增量能力时叠加 Hudi(或 Iceberg);把 CarbonData 用于存量资产维护更稳妥。
八、参考链接
- 项目官网:https://carbondata.apache.org/
- 官方下载页(2.3.2):https://carbondata.apache.org/download.html
- 官方快速上手指南:https://carbondata.apache.org/quick-start-guide.html
- 官方 DDL 文档:https://carbondata.apache.org/ddl-of-carbondata.html
- 官方代码仓库:https://github.com/apache/carbondata
- Maven Central(carbondata-core):https://repo1.maven.org/maven2/org/apache/carbondata/carbondata-core/
- Apache 项目页:https://projects.apache.org/project.html?carbondata