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:
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 = 3.5.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 JavaConverters.
GeoMesa Project Structure¶
geomesa-accumulo:
DataStoreimplementation for Apache Accumulogeomesa-archetypes: Template modules for Maven builds
geomesa-arrow: Apache Arrow integration and
DataStoreimplementationgeomesa-bigtable:
DataStoreimplementation for Google Bigtablegeomesa-cassandra:
DataStoreimplementation for Apache Cassandrageomesa-convert: Configurable and extensible library for converting arbitrary data into
SimpleFeaturesgeomesa-features: Custom implementations and serialization of
SimpleFeaturesgeomesa-filter: Library for manipulating and working with GeoTools
Filtersgeomesa-fs:
DataStoreimplementation for flat filesgeomesa-geojson: API and REST-ful web service for working directly with GeoJSON
geomesa-hbase:
DataStoreimplementation for Apache HBasegeomesa-index-api: Core indexing and
DataStorecodegeomesa-jobs: Map/reduce integration
geomesa-jupyter: Jupyter notebook integration
geomesa-kafka:
DataStoreimplementation for Apache Kafka, for near-real-time streaming datageomesa-lambda:
DataStoreimplementation that seamlessly uses Kafka for frequent updates and Accumulo for long-term persistencegeomesa-memory: In-memory indexing code
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 URLsgeomesa-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