CarbonData 高低基数列处理深度解析:字典的艺术与编码的智慧
用户问题原文:“CarbonData 如何处理高基数(High Cardinality)和低基数(Low Cardinality)列?”
本文将面向具备丰富大数据生态经验但初次接触 Apache CarbonData 的中高级工程师,深入剖析其针对高低基数列的差异化处理策略。我们将从物联网设备指标监控的真实场景出发,系统性地拆解全局字典(Global Dictionary)、直接编码(Direct Encoding)等核心机制,并通过可复现的代码示例、详尽的算法对比和生产级配置,助你掌握在 PB 级数据平台上精准建模,以实现存储效率与查询性能的双重优化。
1. 问题引入:当设备ID拖垮了字典服务
在全球领先的工业物联网平台中,iot_device_metrics表是核心资产,每秒接收来自数百万台设备的心跳、温度、压力等指标。表结构包含:
device_id(STRING): 设备唯一标识符(通常是 UUID,基数极高)。metric_name(STRING): 指标名称(如 ‘temperature’, ‘pressur