
Apache CarbonData 是一种索引列式数据格式,专为快速分析和实时洞察至关重要的大数据场景而开发。这个强大的数据存储解决方案是 Apache 软件基金会内的顶级项目,提供了一种更结构化、更高效、更快速的方法来处理和分析大型数据集。
一、Apache CarbonData 的主要特性
高性能查询执行
Apache CarbonData 利用其先进的索引功能提供卓越的查询性能。它采用多级索引技术来确保更快的数据检索,即使是从巨大的数据集中也是如此。多级索引有助于减少对数据块的不必要扫描,从而显着加快数据加载和查询处理速度。
多种数据存储格式
Apache CarbonData 的显着特点之一是它能够处理多种数据存储格式。它支持多种类型的原始数据,例如 CSV、TSV、JSON、AVRO、Parquet、ORC 等。这使用户能够以适合其需求的最方便的格式存储数据,确保数据处理的多功能性和灵活性。
增强的压缩和编码
Apache CarbonData 使用了一系列先进的编码技术,例如游程编码、增量编码和自适应编码。这些技术及其列式存储功能可实现高效的数据压缩,从而在不影响数据质量的情况下减少数据存储空间。
与 Spark 深度集成
CarbonData 已与 Apache Spark 深度集成,提供 Spark SQL 的查询优化技术并使用其代码生成功能。这使得可以使用 Spark SQL 直接查询 CarbonData 文件,从而提供更快、更高效的查询结果。
支持全局字典编码
此功能有助于压缩表中的公共列,从而提高过滤查询的性能。全局字典编码通过用整数代理键替换高基数字符串值来减小数据的大小。这会减少磁盘 IO 操作,从而加速查询执行。
高效的数据加载
Apache CarbonData 可以通过其对多核处理的支持来执行并行数据加载。它允许对数据进行分区、分桶和重新分区,以实现更快的数据加载。由于其先进的数据预处理功能,CarbonData 中的数据加载操作更加高效。
可扩展性和兼容性
Apache CarbonData 具有出色的可扩展性,可以跨各种硬件设置有效管理海量数据集。它还展示了与 Hadoop 生态系统的兼容性,与不同的大数据工具和组件无缝集成。
支持各种数据类型
Apache CarbonData 支持所有主要数据类型,包括 Array、Struct 和 Map 等复杂类型。这意味着它可以有效地处理来自各种数据源的各种数据,使其具有多功能性并适应各种数据处理任务。
二、Apache CarbonData 的结构

多层结构:
页:页级别是实际数据存储的位置。这些页面中的数据经过编码和压缩,从而提高数据检索效率。
列式存储格式:
Apache CarbonData 中的数据以列式格式存储,这意味着数据集中每一列的值存储在一起,而不是逐行存储。这会带来更好的压缩效果,因为列中的值通常相似。它还允许更有效地执行仅需要表中列的子集的查询。
索引:
Apache CarbonData 使用多级索引策略来加速数据检索过程。在Blocklet级别上,最小/最大索引和Bloom索引有助于在数据扫描期间快速修剪Blocklet。同时,Blocklet级索引和数据存储在一起,减少查询过程中的I/O操作。
字典编码:
为了优化具有高基数的字符串类型列,CarbonData 使用全局字典。这个全局字典维护唯一列值到较短代理键的映射,然后将其用于存储和处理,从而使过滤等操作更快。
三、相对于较旧的大数据格式的重要性
高效的查询执行:
较旧的数据格式缺乏 Apache CarbonData 的多级索引功能。索引可以通过修剪不相关的数据来实现更快的数据扫描,从而减少 I/O 操作并提高查询执行效率。
数据压缩和编码:
Apache CarbonData 应用各种先进的编码技术来压缩数据,而这些技术在旧格式中是不可用的。CarbonData 的列式存储格式还可以实现卓越的数据压缩。这可以节省大量存储空间并提高性能。
与Spark集成:
较旧的数据格式不提供与 Apache Spark 的深度集成,而这是 CarbonData 的一个关键功能。这种集成增强了 Spark 的计算能力,从而加快了数据处理速度。
处理高基数数据:
传统格式通常难以处理高基数数据,尤其是字符串类型列。凭借其全局字典功能,CarbonData 可以有效优化这些高基数列,从而提高查询性能。
多功能性:
与旧格式不同,CarbonData 支持各种数据类型,包括复杂的数据类型,如 Array、Struct 和 Map。这种多功能性使其能够有效地处理更广泛的数据处理任务。
四、结论
原文作者:Ankush Singh




