Open-source project
apache/carbondata avatar
apache/carbondata

Apache CarbonData for Indexed Analytics on Hadoop and Spark

High performance data store solution

1,452 stars695 forksScalaApache-2.0

At a glance

What is it?
Apache CarbonData is a Scala-based columnar store for big-data analytics, with blocklet-level skipping, indexes, compression, and late materialization. Its main operational question is whether those capabilities justify adding CarbonData-specific tables and configuration to an existing Hadoop or Spark environment.
Who is it for?
Engineers running filtered analytical scans on Hadoop or Spark should first review Apache CarbonData when index-assisted reads and a shared format for OLAP, sequential, and random access are important. Operators should not select it merely for the repository's high-performance label.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 21 days ago.
What is it written in?
Mainly Scala, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

CarbonData's Indexed Columnar Storage Problem

Apache CarbonData targets analytical workloads on big-data platforms, with the README naming Apache Hadoop and Apache Spark as examples. Its central design is an indexed, columnar data format stored in HDFS. Columnar organization keeps related values together for analytical scans, while the index can reduce the data that a query framework needs to schedule and process.

The project distinguishes CarbonData from a plain columnar file through index-assisted scanning, operable encoded data, and support for several access patterns with one format. Its intended workloads include interactive OLAP-style queries, large sequential scans, and narrow random-access queries. This makes it relevant to data platform teams that want a storage format tailored to analytical filtering rather than a general-purpose transactional database.

The repository also contains an Agent module. The README describes this direction as using CarbonData as metadata storage for agents that work together, but it does not explain the agent architecture, consistency model, or intended production use. That makes the Agent module a separate area to investigate rather than evidence that the core table format already solves multi-agent coordination.

Blocklets, Indexes, and Late Materialization

CarbonData's file format stores data together with multiple levels of index information. According to the README, a processing framework can use those indexes to reduce scheduled and processed work when a query contains filters. The format can also perform a finer-grained skip scan at task execution time rather than reading an entire file.

The unit named in that mechanism is the blocklet. CarbonData can avoid reading blocklets that index information indicates are unnecessary for a filtered query. The README presents this as a reduction in I/O scanning and CPU resource use, but it does not provide a benchmark, a query example, or rules for estimating how much any particular dataset will benefit. Index selectivity, data distribution, and query shape therefore cannot be inferred from the project description alone.

Late materialization is the second distinctive mechanism. CarbonData supports compression and global encoding schemes, and it can query compressed or encoded data. Values are converted immediately before results are returned to the user. The README also mentions a compression schema and complex data types, placing encoded storage closer to query execution instead of requiring every column to be expanded before scanning.

This design is most relevant when filters can exclude substantial portions of stored data. The repository does not document a case where indexing is undesirable, nor does it provide storage overhead figures in the README. Any adoption decision based on skipped I/O needs workload-specific evidence.

Hadoop and Spark Integration Boundaries

CarbonData belongs inside a distributed big-data stack rather than operating as a stand-alone query engine. Its data files reside in HDFS, and the documented integrations include Hive, Presto, Alluxio, and Flink. There is also a dedicated guide for using Carbon as a Spark datasource. The repository's module layout, including `hadoop/`, `processing/`, `streaming/`, `integration/`, `sdk/`, and `python/`, reflects several execution and access paths around the format.

The README links documentation for SQL data definition and manipulation, streaming ingestion, configuration, supported data types, secondary indexes, materialized views, change data capture, and slowly changing dimensions. That breadth indicates a table system with lifecycle and query concerns, but linked documentation alone does not establish feature parity with any particular Spark release or connector.

Some advertised functionality is explicitly experimental. The README lists hybrid format tables through Add Segment, materialized views on Parquet or ORC, a Spark DataFrame merge API, Hive writes for non-transactional tables, and secondary indexes used as coarse-grain indexes. It warns that syntax and implementation may change. These features should not be placed on the same adoption footing as the core columnar and indexing capabilities without checking their current documentation and implementation status.

Building CarbonData and Reaching the First Use

The README says CarbonData is built using Apache Maven and links to the repository's `build` directory for build instructions. It does not reproduce the Maven command, required Java or Scala versions, or a complete installation procedure, so this article does not invent a shell command. Start with that linked build guide and select the modules needed for the intended Spark, Hadoop, or integration path.

For a first real use, the repository points new users to its Quick Start, introduction, SQL language reference, and Carbon as a Spark datasource guide. Those pages are the appropriate place to obtain the exact commands, configuration keys, and SQL statements. The README does not document a portable `pip install`, standalone binary archive, Docker image, or default service startup sequence.

A sensible adoption exercise would use a dataset whose filters are selective, create a CarbonData table through the documented SQL path, load it through the supported ingestion mechanism, and compare the query plan with the same logical data stored in the platform's existing format. The README supports filtered scans, blocklet skipping, and Spark datasource access as evaluation points. It does not state a default port, environment variable, compatibility matrix, or minimum cluster size, so those details must come from the linked guides rather than assumption.

CarbonData Compared with Parquet and ORC

Parquet and ORC are the clearest alternatives visible in the repository because the README names both as external formats and lists experimental work on accelerating materialized views over them. The difference in approach is that CarbonData packages index metadata, compression and encoding support, blocklet-level skipping, and late materialization into its own analytical table format. The README does not describe Parquet or ORC here as having those CarbonData-specific mechanisms, nor does it provide a controlled comparison.

CarbonData also offers paths for reading heterogeneous format segments through Add Segment, although that feature is experimental. That suggests an architecture in which CarbonData can participate in mixed-format environments rather than requiring every dataset to be rewritten immediately. The README does not state compatibility coverage, migration constraints, or operational trade-offs for that workflow.

Teams already standardized on Parquet or ORC have a different decision to make. They need evidence that CarbonData's index selection and skip-scan behavior offsets the cost of another storage format, table definition language, and configuration surface. A generic preference for more indexes would not answer that question.

Maintenance Signals and Apache-2.0 Implications

The repository is not archived, and its last push was on 2026-10-02. That is a recent repository activity signal, but the README contains no GitHub releases from which to infer release cadence, upgrade compatibility, or long-term support policy. The visible `build` directory and extensive documentation reduce the need to guess how development is organized, yet they do not establish a versioned migration plan for a deployment.

Apache CarbonData is identified as licensed under `Apache-2.0`, with the repository's `LICENSE` and `NOTICE` files serving as the governing project references. An organization should inspect those files for its actual use, distribution, attribution, and third-party component questions. This is not legal advice. The separate `licenses-binary/` directory also indicates that binary-related licensing information is part of the repository layout, so source-only assumptions may be incomplete for packaged artifacts.

Upgrade cost cannot be calculated from the README alone. It does not state whether table files can be opened by older versions, whether configuration keys change, or whether experimental features require migration. These checks belong before selecting a release for production.

Editorial conclusion

Engineers running filtered analytical scans on Hadoop or Spark should first review Apache CarbonData when index-assisted reads and a shared format for OLAP, sequential, and random access are important. Operators should not select it merely for the repository's high-performance label. Before adoption, verify compatibility with the intended Spark version, storage layer, SQL features, and operational documentation, then follow the linked Quick Start with a representative dataset.

Frequently asked questions

What is Apache CarbonData used for?

Apache CarbonData is an indexed columnar data store for analytical workloads on platforms such as Hadoop and Spark. The README identifies OLAP-style queries, sequential scans, and random access as supported use cases.

How does Apache CarbonData reduce query I/O?

CarbonData stores index information with the data and can skip entire blocklets when filters make them unnecessary. The README says its multi-level indexes can also reduce framework task scheduling and processing.

How do I build Apache CarbonData?

The README states that CarbonData is built with Apache Maven and directs users to the repository's `build` directory. It does not provide the complete Maven command or required tool versions in the README itself.

Official sources

  1. apache/carbondata on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/apache-carbondata.svg)](https://hysenlabs.com/projects/apache-carbondata)

Was this useful?