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
git
client
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:
DataStore
implementation for Apache Accumulogeomesa-archetypes: Template modules for Maven builds
geomesa-arrow: Apache Arrow integration and
DataStore
implementationgeomesa-bigtable:
DataStore
implementation for Google Bigtablegeomesa-cassandra:
DataStore
implementation for Apache Cassandrageomesa-convert: Configurable and extensible library for converting arbitrary data into
SimpleFeature
sgeomesa-features: Custom implementations and serialization of
SimpleFeature
sgeomesa-filter: Library for manipulating and working with GeoTools
Filter
sgeomesa-fs:
DataStore
implementation for flat filesgeomesa-geojson: API and REST-ful web service for working directly with GeoJSON
geomesa-hbase:
DataStore
implementation for Apache HBasegeomesa-index-api: Core indexing and
DataStore
codegeomesa-jobs: Map/reduce integration
geomesa-jupyter: Jupyter notebook integration
geomesa-kafka:
DataStore
implementation for Apache Kafka, for near-real-time streaming datageomesa-lambda:
DataStore
implementation 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:
DataStore
implementation 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