GeoMesa Development¶
This chapter describes how to build GeoMesa from source and provides an overview of the process of developing GeoMesa.
Using Maven¶
The GeoMesa project uses Apache Maven as a build tool. The Maven project’s
Maven in 5 Minutes provides a
quick introduction to getting started with its mvn executable.
Building from Source¶
These development tools are required:
- Java JDK 8
- Apache Maven 3.5.2 or later
- A
gitclient
The GeoMesa source distribution may be cloned from GitHub:
$ git clone https://github.com/locationtech/geomesa.git
$ cd geomesa
This downloads the latest development version. To check out the code for the latest stable release
($VERSION = 2.2.2):
$ git checkout tags/geomesa-$VERSION -b geomesa-$VERSION
Building and dependency management for GeoMesa is handled by Maven.
The Maven pom.xml file in the root directory of the source distribution contains a
list of dependent libraries that will be bundled together for each module of the program. Build using the
mvn executable:
$ mvn clean install
The skipTests property may be used to reduce build time, as it omits the test phase of the build process:
$ mvn clean install -DskipTests
To compile for Google Bigtable, use the bigtable profile:
$ mvn clean install -Pbigtable
The build/mvn script is a wrapper around Maven that builds the project using the
Zinc incremental compiler:
$ build/mvn clean install -DskipTests
Scala¶
For the most part, GeoMesa is written in Scala, and is compiled with Scala 2.11.7.
Using the Scala Console¶
To test and interact with core functionality, the Scala console can be invoked in a couple of ways. For example, by running this command in the root source directory:
$ mvn scala:console -pl geomesa-accumulo/geomesa-accumulo-datastore
The Scala console will start, and all of the project packages in geomesa-accumulo-datastore will be loaded along
with JavaConversions and JavaConverters.
GeoMesa Project Structure¶
- geomesa-accumulo:
DataStoreimplementation for Apache Accumulo - geomesa-archetypes: Template modules for Maven builds
- geomesa-arrow: Apache Arrow integration and
DataStoreimplementation - geomesa-bigtable:
DataStoreimplementation for Google Bigtable - geomesa-blobstore: Accumulo-backed store designed for large files which have associated spatio-temporal data
- geomesa-cassandra:
DataStoreimplementation for Apache Cassandra - geomesa-convert: Configurable and extensible library for converting arbitrary data into
SimpleFeatures - geomesa-features: Custom implementations and serialization of
SimpleFeatures - geomesa-filter: Library for manipulating and working with GeoTools
Filters - geomesa-fs:
DataStoreimplementation for flat files - geomesa-geojson: API and REST-ful web service for working directly with GeoJSON
- geomesa-hbase:
DataStoreimplementation for Apache HBase - geomesa-index-api: Core indexing and
DataStorecode - geomesa-jobs: Map/reduce integration
- geomesa-jupyter: Jupyter notebook integration
- geomesa-kafka:
DataStoreimplementation for Apache Kafka, for near-real-time streaming data - geomesa-lambda:
DataStoreimplementation that seamlessly uses Kafka for frequent updates and Accumulo for long-term persistence - geomesa-memory: In-memory indexing code
- geomesa-metrics: Extensions and configuration for DropWizard metrics integration
- geomesa-native-api: Non-GeoTools API for persisting and querying data in Accumulo
- geomesa-process: Analytic processes optimized for GeoMesa stores
- geomesa-security: API for managing security and authorization levels in GeoMesa
- geomesa-spark: Apache Spark integration
- geomesa-stream:
DataStoreimplementation that reads features from arbitrary URLs - geomesa-test: Integration testing scripts
- geomesa-tools: Command-line tools for ingesting, querying and managing data in GeoMesa
- geomesa-utils: Common utility code
- geomesa-web: REST-ful web services for integrating with GeoMesa
- geomesa-z3: Z3 space-filling-curve implementation
- geomesa-zk-utils: Zookeeper utility code