Apache CarbonData 2.3.0 常用 CLI 命令与工具详解
Apache CarbonData 2.3.0 常用 CLI 命令与工具详解,覆盖 CarbonCli 独立工具的 summary、benchmark 用法与 Spark SQL 管理命令 SHOW SEGMENTS、SHOW COLUMNS、COMPACT,附完整实测回显与数据目录结构。
Apache CarbonData 2.3.0 常用 CLI 命令与工具详解
目标:梳理 Apache CarbonData 2.3.0 的两类命令行入口——独立 CarbonCli 诊断工具与 Spark SQL 管理命令,逐一给出用法与实测回显,并说明数据目录结构与使用限制。
一、工具概览
CarbonData 2.3.0 提供两类命令行能力:
- CarbonCli 独立工具:org.apache.carbondata.tool.CarbonCli,随 carbondata-cli-2.3.0.jar 发布,离线分析数据文件,无需启动 Spark
- Spark SQL 管理命令:SHOW SEGMENTS、SHOW COLUMNS、ALTER TABLE COMPACT、SHOW TABLES 等,需在启用了 CarbonExtensions 的 SparkSession 内执行
CarbonData 是列式存储家族成员,与 ORC、Parquet 同属大数据列式格式:
💡 技术拓展:列式存储按列组织数据,同一列的相邻值连续存放,配合压缩与索引可大幅减少扫描量;行式存储(如 MySQL、PostgreSQL 的普通表)整行连续存放,适合点查与小事务。与 ORC、Parquet 相比,CarbonData 内置多维索引(Blocklet/Page 级 min-max、倒排索引、布隆索引)与 Segment 化增量写入、Compaction 合并机制,过滤下推更快,增量写入与更新场景更友好。
二、环境准备
本机实测环境:CentOS 8.4(JDK 1.8.0_312)、CarbonData 2.3.0、Spark 3.1.3。通过 Maven 生成全部依赖 Classpath:
cd /opt/carbondata/demo
mvn -s maven-settings.xml dependency:build-classpath -Dmdep.outputFile=/opt/carbondata/cp.txt
Classpath 内容包含 carbondata-cli-2.3.0.jar 与 carbondata-core-2.3.0.jar 等,供 CarbonCli 直接调用:
grep -o "carbondata-cli[^:]*" /opt/carbondata/cp.txt
实测回显:
carbondata-cli/2.3.0/carbondata-cli-2.3.0.jar
三、CarbonCli 独立工具
3.1 查看用法
java -cp "$(cat /opt/carbondata/cp.txt)" org.apache.carbondata.tool.CarbonCli -cmd summary -p /opt/carbondata/data/carbon_table
如命令拼写不受支持,会打印完整用法(节选):
usage: CarbonCli
-a,--all print all information
-b,--limitSize <limitSize> print blocklet size detail
-B,--blockDetail <blockDetail> print block details
-c,--column <column name> column to print statistics
-C,--columns print statistics for all columns
-cmd <command name> command to execute, supported commands
are: summary, benchmark
-f,--file <file> the carbondata file path
-h,--help print this message
3.2 summary 摘要
java -cp "$(cat /opt/carbondata/cp.txt)" org.apache.carbondata.tool.CarbonCli \
-cmd summary -p /opt/carbondata/data/carbon_table
实测回显:
Input Folder: /opt/carbondata/data/carbon_table
## Summary
total: 2 blocks, 2 shards, 2 blocklets, 2 pages, 3 rows, 1.70KB
avg: 869.0B/block, 869.0B/blocklet, 1 rows/block, 1 rows/blocklet
解读:全表共 2 个块、2 个分片(Shard,对应 2 个数据文件)、2 个 Blocklet、3 行数据,数据总大小 1.70KB。
3.3 summary -a 全量信息
java -cp "$(cat /opt/carbondata/cp.txt)" org.apache.carbondata.tool.CarbonCli \
-cmd summary -a -p /opt/carbondata/data/carbon_table
实测回显(节选):
## Summary
total: 2 blocks, 2 shards, 2 blocklets, 2 pages, 3 rows, 1.70KB
## Schema
schema in part-0-1_batchno0-0-0-1791908380958.snappy.carbondata
version: V3
timestamp: 2026-10-13 16:19:39.366
Column Name Data Type Column Type SortColumn Encoding Ordinal Id
name STRING dimension false [] 1 *0d39
city STRING dimension false [] 2 *701c
id INT measure false [] 0 *053c
## Segment
SegmentID Status Load Start Load End Merged To Format Data Size Index Size
0 Success 2026-10-13 16:19:40.958 2026-10-13 16:19:42.234 NA columnar_v3 1.70KB 1.06KB
## Table Properties
Property Name Property Value
'sort_columns' ''
'hasexternalkeyword' 'false'
'local_dictionary_enable' 'true'
'indextableexists' 'false'
'indexexists' 'false'
'_external' 'true'
'comment' ''
'bad_record_path' ''
## Block Detail
Shard #1 (0_batchno0-0-0-1791908380958)
BLK BLKLT NumPages NumRows Size
0 0 1 1 372.0B
Shard #2 (1_batchno0-0-0-1791908380958)
BLK BLKLT NumPages NumRows Size
0 0 1 2 394.0B
解读:Schema 展示每列的列类型(dimension 维度列 / measure 度量列)、排序标记与字典编码;Segment 展示段状态与数据/索引大小;Table Properties 展示建表属性;Block Detail 展示各数据文件的块与页分布。
3.4 benchmark 基准测试
java -cp "$(cat /opt/carbondata/cp.txt)" org.apache.carbondata.tool.CarbonCli \
-cmd benchmark -p /opt/carbondata/data/carbon_table
实测回显:
Input Folder: /opt/carbondata/data/carbon_table
## Benchmark
ReadHeaderAndFooter takes 1,168 us
ConvertFooter takes 11,607 us
ReadAllMetaAndConvertFooter takes 3,153 us
解读:benchmark 输出读取文件头尾、转换页脚元数据等环节的耗时(微秒),用于评估文件解析开销。
四、Spark SQL 管理命令
管理命令必须在启用了 CarbonExtensions 的 SparkSession 内执行,且建表与查询需在同一会话。以下回显来自完整管理 Demo 的一次运行。
4.1 SHOW TABLES
SHOW TABLES
实测回显:
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+
注意:未配置 Hive Metastore 时表元数据仅存于内存 Catalog,同会话内建表后此处即可看到表。
4.2 SHOW SEGMENTS 查看段
SHOW SEGMENTS FOR TABLE carbon_table LIMIT 10
实测回显:
+---+-------+--------------------+---------------+---------+---------+----------+-----------+
| ID| Status| Load Start Time|Load Time Taken|Partition|Data Size|Index Size|File Format|
+---+-------+--------------------+---------------+---------+---------+----------+-----------+
| 0|Success|2026-10-13 16:23:26.0| 1.781S| NA| 1.71KB| 1.06KB|columnar_v3|
+---+-------+--------------------+---------------+---------+---------+----------+-----------+
4.3 SHOW COLUMNS 查看列
SHOW COLUMNS FROM carbon_table
实测回显:
+--------+
|col_name|
+--------+
| id|
| name|
| city|
+--------+
4.4 ALTER TABLE COMPACT 合并段
ALTER TABLE carbon_table COMPACT 'MINOR'
实测回显:
AUDIT {"opName":"ALTER TABLE COMPACTION MINOR","opStatus":"SUCCESS","opTime":"41 ms","table":"default.carbon_table","extraInfo":{}}
4.5 清理命令
TRUNCATE TABLE carbon_table;
DROP TABLE carbon_table;
TRUNCATE 清空数据并保留表结构,DROP 删除表与元数据。两者均在 SparkSession 会话内立即生效。
五、数据目录结构
find /opt/carbondata/data/carbon_table -type f
实测回显:
/opt/carbondata/data/carbon_table/Metadata/segments/0_1791908380958.segment
/opt/carbondata/data/carbon_table/Metadata/tablestatus
/opt/carbondata/data/carbon_table/Metadata/schema
/opt/carbondata/data/carbon_table/LockFiles/compaction.lock
/opt/carbondata/data/carbon_table/LockFiles/tablestatus.lock
/opt/carbondata/data/carbon_table/LockFiles/meta.lock
/opt/carbondata/data/carbon_table/LockFiles/Segment_0.lock
/opt/carbondata/data/carbon_table/Fact/Part0/Segment_0/part-0-1_batchno0-0-0-1791908380958.snappy.carbondata
/opt/carbondata/data/carbon_table/Fact/Part0/Segment_0/part-0-0_batchno0-0-0-1791908380958.snappy.carbondata
/opt/carbondata/data/carbon_table/Fact/Part0/Segment_0/0_1791908380958.carbonindexmerge
| 路径 | 内容 |
|---|---|
| Fact/Part0/Segment_0/ | 段内列式数据文件(.snappy.carbondata)与段级索引(.carbonindexmerge) |
| Metadata/segments/ | 段元数据文件(.segment) |
| Metadata/tablestatus | 表状态文件 |
| Metadata/schema | 表 Schema 文件 |
| LockFiles/ | 并发控制锁文件 |
六、使用限制与注意事项
- Spark SQL 管理命令依赖 CarbonExtensions,脱离 Spark 会话不可用;独立场景使用 CarbonCli
- 未配置外部 Metastore 时,SHOW SEGMENTS 等命令必须在建表的同一会话内执行,否则报 Table not found
- CarbonCli 的 -p 参数指向表数据目录(含 Metadata 与 Fact 的父目录),指向单文件需改用 -f 参数
- 大数据量生产场景应使用 spark-submit 方式提交,本地 local 模式仅用于验证
七、参考链接
- Apache CarbonData 官方文档:https://carbondata.apache.org/
- CarbonCli 工具指南:https://carbondata.apache.org/carbon-cli-tool-guide.html
- CarbonData 数据管理:https://carbondata.apache.org/data-management-on-carbondata.html
- CarbonData 建表 DDL:https://carbondata.apache.org/create-table.html
- CarbonData 元数据管理:https://carbondata.apache.org/metadata-management.html