GeoMesa for distributed geospatial indexing, streaming, and analytics
GeoMesa is a suite of tools for working with big geo-spatial data in a distributed fashion.
At a glance
- What is it?
- GeoMesa adds spatial and temporal indexing to distributed data stores, connects Kafka to stream processing, exposes data through GeoServer, and supports Apache Spark. Its modular design suits organizations already operating the required storage, messaging, and compute infrastructure.
- Who is it for?
- GeoMesa fits teams that already operate Accumulo, HBase, Cassandra, Kafka, GeoServer, or Spark and need spatiotemporal indexing at distributed scale. It is a poor fit for a small local dataset or teams unwilling to own a multi-service platform.
- 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 received new commits within the last day.
- 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.
Star history
- locationtech/geomesa1,499 ★ · +0
| Repository | 2026-10-16 | 2026-10-23 |
|---|---|---|
| locationtech/geomesa | 1.5k | 1.5k |
0 Stars in the last 7 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
GeoMesa's distributed geospatial data path
GeoMesa addresses applications that must store, index, query, and analyze large collections of points, lines, and polygons. Its intended users are engineers working with distributed computing and storage systems, especially teams that need location-aware behavior on top of infrastructure they can scale horizontally. The project is implemented primarily in Scala and is organized as a suite rather than a single application. That distinction matters because a deployment may use only one datastore module, one streaming integration, and the query or service layers required by the workload.
In the distributed data-store architectures GeoMesa targets, additional spatial and temporal indexing can improve the efficiency of geographic queries. GeoMesa places a spatio-temporal index over Accumulo, HBase, or Cassandra, which the README identifies as stores for massive point, line, and polygon data. It also provides near-real-time stream processing by placing spatial semantics over Apache Kafka. GeoMesa supports Apache Spark for custom distributed analytics and can expose data to mapping clients through GeoServer using standard OGC protocols such as WFS and WMS.
The repository layout confirms that these are separately developed modules. Directories include geomesa-accumulo, geomesa-hbase, geomesa-cassandra, geomesa-kafka, geomesa-spark, geomesa-trino, geomesa-gt, geomesa-jobs, and geomesa-tools. This is useful for engineers who need to match modules to infrastructure, but it also means adoption requires choosing a supported combination rather than treating GeoMesa as a self-contained database.
Why GeoMesa separates indexing, streaming, and serving
GeoMesa's design links several kinds of geospatial work without requiring one deployment pattern for all of them. The datastore modules handle indexed storage, Kafka adds a path for near-real-time spatial stream processing, GeoServer provides the standards-based serving layer, and Spark supports custom distributed computations. Trino, Redis, FileSystem, and PostGIS-related modules are also identified through downloadable bundles or repository directories, showing that the suite extends beyond the three primary indexed stores named in the README.
This separation offers operational choices. A batch analytics system could depend on GeoMesa's Spark-facing modules without routing every query through GeoServer. A map-serving deployment can use GeoServer and OGC interfaces instead. A streaming architecture can use Kafka with the Kafka integration. The price is more decision-making. The user must select a datastore or storage backend, assemble compatible modules, configure repositories, and decide which query, serving, and processing layers belong in the deployment.
The suite does not describe itself as a replacement for its underlying systems. Accumulo, HBase, Cassandra, Kafka, GeoServer, and Spark still define much of the infrastructure around it. GeoMesa supplies geospatial indexing, filters, conversion and analytics components visible in the repository, along with integrations for those systems. This makes it closer to a distributed geospatial toolchain than to a standalone database product.
GeoMesa 5.4.0 installation and dependency setup
The README identifies GeoMesa 5.4.0 as the latest release and provides separate binary bundles for Accumulo, HBase, Cassandra, Kafka, Redis, Trino, FileSystem, and PostGIS. Download only the bundle that matches the storage or streaming path in the deployment. The project also publishes its documentation and quick starts, but the README does not include an end-to-end command for creating a datastore or executing the first query. Those steps should come from the relevant GeoMesa 5.4.0 quick start rather than from guessed command-line flags.
For Maven projects, the documented Accumulo datastore dependency is below. It adds `geomesa-accumulo-datastore_2.12` version `5.4.0` to the project.
<dependency>
<groupId>org.locationtech.geomesa</groupId>
<artifactId>geomesa-accumulo-datastore_2.12</artifactId>
<version>5.4.0</version>
</dependency>GeoMesa also provides `geomesa-bom_2.12` for dependency version management. The README requires separate repositories for third-party GeoTools and Confluent dependencies, using `https://repo.osgeo.org/repository/release` and `https://packages.confluent.io/maven/`. After Maven resolves those repositories and dependencies, the first concrete operation depends on the selected module. The quick start should define the datastore configuration, create or load the sample data, and show a spatial query whose result confirms the setup.
For Spark environments such as Databricks, the README publishes `spark-runtime` JARs containing the required dependencies in one artifact. This can simplify Spark integration, but it does not remove the need to match the runtime artifact with the chosen DataStore implementation and Spark environment. The repository provides several such modules across its datastore directories.
GeoMesa download verification before first use
GitHub-hosted GeoMesa downloads include SHA-256 hashes and `.asc` signatures. For release `5.4.0`, the README provides an exact GPG verification sequence using signing key `CD24F317`. Import the key, place the archive and its `.asc` file together, and run the verification command from the release directory.
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys CD24F317
gpg --verify geomesa-accumulo_2.12-5.4.0-bin.tar.gz.asc geomesa-accumulo_2.12-5.4.0-bin.tar.gzThe first command imports Emilio Lahr-Vivaz's signing key. The second checks the Accumulo binary archive against its detached signature. A successful cryptographic match is the first concrete verification step before using the archive. The README also lists `1E679A56` for James Hughes, but it presents that key as another signing key rather than as a second command to combine with the example.
After verification, use the corresponding quick start to configure the chosen backend. The README does not document extraction paths, environment variables, ports, server startup commands, or a sample query, so those details cannot be safely filled in here. Those omissions are a meaningful constraint for an initial evaluation. The project directs users to its quick starts and tutorials, but the README does not make a standalone cluster deployment self-contained.
GeoMesa operational constraints and module trade-offs
GeoMesa's breadth can become an adoption cost. A typical system may require a datastore cluster, Kafka for streaming, GeoServer for map services, or Spark for analytics. Each component brings configuration, version coordination, monitoring, and failure handling that GeoMesa does not eliminate. The README does not document a turnkey deployment, sizing model, rollback procedure, or compatibility matrix, so those points require direct review of the 5.4.0 documentation.
The Spark runtime JARs illustrate a specific trade-off. A shaded artifact packages required dependencies into one file, which can simplify a Spark environment. GeoMesa also supports excluding transitive dependencies in the Maven declaration. That reduces dependency resolution in some environments, but it transfers responsibility for ensuring the runtime has the correct libraries. The project is flexible here, but flexibility also increases the number of deployment decisions.
GeoMesa is also the wrong tool when the application only needs a small local geospatial dataset. The suite is designed around distributed systems and substantial storage requirements. Its dependency graph and integration surface would add operational work where a lightweight local data structure or a single conventional database would be more direct. The README does not provide thresholds that automatically identify a workload as too small, so engineers must judge this from their data volume, query concurrency, and infrastructure needs.
GeoMesa versus using a datastore without its geospatial layer
The relevant alternative is to use the underlying datastore directly and implement geospatial queries and indexing in the application or with tools already provided by that datastore. This differs from GeoMesa's approach. Instead of adding a common spatiotemporal indexing layer across Accumulo, HBase, or Cassandra, the application would own the index design, spatial predicates, query encoding, and integration with map serving and analytics.
That alternative can be simpler when one datastore already supplies all required geographic behavior and the workload stays within that platform. It avoids installing several GeoMesa modules and the associated repository dependencies. The trade-off is that storage-specific geographic logic can become harder to reuse across Kafka, GeoServer, Spark, or a future backend change.
GeoMesa becomes more relevant when the same spatial semantics must travel across storage, streaming, serving, and custom Spark analytics. The README explicitly connects those layers. It is less compelling when only one narrow query path is needed and that path is already supported by the chosen system. The decision should therefore be based on the number of required integrations and the cost of maintaining custom geospatial logic, not merely on the size of the dataset.
GeoMesa 5.4.0 release and upgrade considerations
The repository is not archived, and its last push was on 2026-10-15. The listed releases are GeoMesa 5.4.0 from 2025-10-08, GeoMesa 5.3.0 from 2025-05-22, and GeoMesa 5.2.2 from 2025-03-26. The project also publishes an upgrade guide, but the README does not enumerate the changes or migration commands between those versions.
The module suffixes shown in the examples use Scala `2.12`, and artifacts such as the Accumulo datastore, BOM, and Spark runtime are versioned together at `5.4.0` in the README. That gives Maven projects a concrete version coordinate, but it does not prove compatibility with every Accumulo, HBase, Cassandra, Kafka, GeoServer, or Spark version. The README does not state those compatibility boundaries.
GeoMesa is licensed under Apache-2.0. The repository also contains `LICENSE.txt` and `LICENSES.md`, indicating that licensing information for the wider codebase should be reviewed rather than inferred from only the repository-level identifier. For an upgrade, the first project-specific checks are the official upgrade guide, the `5.4.0` quick start, module alignment around `5.4.0`, and the repository configuration required for GeoTools and Confluent artifacts.
Editorial conclusion
GeoMesa fits teams that already operate Accumulo, HBase, Cassandra, Kafka, GeoServer, or Spark and need spatiotemporal indexing at distributed scale. It is a poor fit for a small local dataset or teams unwilling to own a multi-service platform. Before adoption, verify the relevant 5.4.0 quick start, repository configuration, storage and query semantics, and compatibility with the existing deployment.
Frequently asked questions
What databases can GeoMesa index for geospatial data?
The README says GeoMesa provides spatio-temporal indexing over Accumulo, HBase, and Cassandra for point, line, and polygon data. It also publishes separate release bundles for Redis, Trino, FileSystem, and PostGIS.
How do I install GeoMesa in a Maven project?
Add the module you need to `pom.xml` using the `org.locationtech.geomesa` group ID, and configure the documented OSGeo and Confluent repositories. The README gives `geomesa-accumulo-datastore_2.12` version `5.4.0` as its Maven example.
Does GeoMesa support streaming and map services?
The README states that GeoMesa layers spatial semantics on Apache Kafka for near-real-time stream processing. Through GeoServer, it can serve data to mapping clients through OGC APIs and protocols including WFS and WMS.
Official sources
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.
[](https://hysenlabs.com/projects/locationtech-geomesa)Star history chart for your README
[](https://hysenlabs.com/projects/locationtech-geomesa)Was this useful?