12.3. Using the Lambda Data Store Programmatically

12.3.1. Creating a Data Store

An instance of a Lambda data store can be obtained through the normal GeoTools discovery methods, assuming that the GeoMesa code is on the classpath:

Map<String, String> parameters = new HashMap<>;
parameters.put("accumulo.instanceId", "myInstance");
parameters.put("accumulo.zookeepers", "zoo1,zoo2,zoo3");
parameters.put("accumulo.user", "myUser");
parameters.put("accumulo.password", "myPassword");
parameters.put("accumulo.tableName", "my_table");
parameters.put("kafka.brokers", "kafka1:9092,kafka2:9092");
parameters.put("kafka.zookeepers", "zoo1,zoo2,zoo3");
parameters.put("expiry", "10 minutes");
org.geotools.data.DataStore dataStore = org.geotools.data.DataStoreFinder.getDataStore(parameters);

More information on using GeoTools can be found in the GeoTools user guide.

12.3.2. Parameters

The Lambda Data Store takes several parameters:

Parameter Description
accumulo.instanceId * The instance ID of the Accumulo installation
accumulo.zookeepers * A comma separated list of zookeeper servers (e.g. “zoo1,zoo2,zoo3” or “localhost:2181”)
accumulo.tableName * The name of the GeoMesa catalog table
accumulo.user * Accumulo username
accumulo.password Accumulo password
accumulo.keytabPath Path to a Kerberos keytab file containing an entry for the specified user
kafka.brokers * A comma separated list of kafka brokers (e.g. broker1:9092,broker2:9092)
kafka.zookeepers * A comma separated list of zookeeper servers (e.g. zoo1,zoo2,zoo3 or localhost:2181)
expiry * A duration for how long features are kept in memory before being persisted (e.g. 10 minutes). Using Inf will cause the data store to not participate in persisting expired entries
persist Whether expired features should be persisted to Accumulo or just discarded
accumulo.queryTimeout The max time (in sec) a query will be allowed to run before being killed
accumulo.queryThreads The number of threads to use per query
accumulo.recordThreads The number of threads to use for record retrieval
accumulo.writeThreads The number of threads to use for writing records
kafka.partitions Number of partitions used to create new topics. You should generally set this to the number of writer instances you plan to run
kafka.consumers Number of consumers used to load data into the in-memory cache
kafka.producer.options Java-properties-formatted string that is passed directly to the Kafka producer. See Producer Configs
kafka.consumer.options Java-properties-formatted string that is passed directly to the Kafka consumer. See New Consumer Configs
visibilities Visibility labels to apply to all written data
auths Comma-delimited superset of authorizations that will be used for filtering data
looseBoundingBox Use non-exact matching for bounding box filters, which will speed up queries
collectStats Enable collection of data statistics
auditQueries Enable auditing of queries against the data store

The required parameters are marked with an asterisk. One (but not both) of accumulo.password and accumulo.keytabPath must be provided.