24.8. Version 4.0.0

24.8.1. Version Compatibility

GeoMesa 4.0.0 is focused on upgrading dependency versions and removing deprecated features, and only contains a few new features. To make upgrading easier, version 4.0.x is generally compatible with version 3.5.x across different environments. This means that it is possible to upgrade in parts; i.e. upgrade GeoServer to 4.0.0 but keep NiFi at 3.5.1. Please note that previously deprecated functionality (see below) may no longer work once any part of the environment is upgraded to 4.0.0.

24.8.2. Scala Versions

Scala 2.11 support has been removed, and Scala 2.13 support has been added (in addition to the existing Scala 2.12 support).

24.8.3. GeoTools/GeoServer Versions

GeoTools has been upgraded from 23.3 to 28.2. GeoServer has been upgrade from 2.17.3 to 2.22.2. JTS has been upgraded from 1.17.0 to 1.19.0.

As part of this upgrade, various GeoTools methods have changed in incompatible ways. Several classes, in particular Query and SimpleFeatureBuilder, have changed from accepting arrays to using varargs (variable arguments). Additionally, the various DataStore methods, such as DataStoreFinder, now require Map<String, ?> instead of Map<String, ? extends Serializable>.

24.8.4. Dependency Version Upgrades

The following high-level dependencies have been upgraded:

  • Apache Hadoop 2.8.5 -> 2.10.2

  • Apache Spark 2.4.7 -> 3.3.1

  • Apache Accumulo 2.0.0 -> 2.0.1

  • Apache HBase 1.4.12 -> 1.4.14, 2.2.3 -> 2.5.2

  • Apache Kafka 2.1.1 -> 2.8.2

  • Apache Arrow 0.16.0 -> 11.0.0

  • Apache Avro 1.8.2 -> 1.11.1

  • Apache Parquet 1.9.0 -> 1.12.3

  • Apache Orc 1.5.4 -> 1.8.2

  • Jedis 3.0.1 -> 4.3.1

  • Confluent 5.1.0 -> 6.2.7

  • Kryo 3.0.3 -> 4.0.2

  • Typesafe Config 1.3.3 -> 1.4.2

  • EJML 0.34 -> 0.41

  • Saxon 9.7.0-20 -> 11.4

For a full changelist of all dependencies, see the diff here.

24.8.5. Minimum Library Versions

Support for older versions of some libraries has been dropped. The following minimum versions are now required:

  • Apache Accumulo 2.0.0 (dropped support for 1.7, 1.8, 1.9, and 1.10)

  • Apache Spark 3.0 (dropped support for 2.4)

  • Apache Kafka 2.0 (dropped support for 0.10, 0.11, 1.0, and 1.1)

24.8.6. Removal of Deprecated Modules

The following deprecated modules were removed:

  • geomesa-bigtable

  • geomesa-kudu

  • geomesa-stream

  • geomesa-geojson

  • geomesa-web

  • geomesa-feature-nio

  • geomesa-convert-metrics-cloudwatch

  • geomesa-convert-metrics-ganglia

  • geomesa-convert-metrics-graphite

In addition, various other deprecated classes and methods were removed. To identify any code that requires changes, build your project against GeoMesa 3.5.1 and note any deprecation warnings generated by the compiler.

24.8.7. Package Changes

The following packages were moved, renamed or split in order to support Java 11 modules:

  • org.locationtech.geomesa.jobs.accumulo -> org.locationtech.geomesa.accumulo.jobs

  • org.locationtech.geomesa.spark.accumulo -> org.locationtech.geomesa.accumulo.spark

  • org.locationtech.geomesa.spark.hbase -> org.locationtech.geomesa.hbase.spark

  • org.locationtech.geomesa.arrow.vector (partial) -> package org.locationtech.geomesa.arrow.jts

  • org.locationtech.geomesa.parquet -> org.locationtech.geomesa.fs.storage.parquet

  • org.locationtech.geomesa.process (partial) -> org.locationtech.geomesa.process.wps

24.8.8. GeoMesa NiFi Changes

GeoMesa NiFi is now built against NiFi 1.19.1. The GeoMesa NARs and JARs have been renamed to include the Scala version (i.e. geomesa-datastore-services-nar_2.12-4.0.0.nar). The datastore-specific processors (e.g. PutGeoMesaHBase) have been removed in favor of the generic processors (e.g. PutGeoMesa). The recommended upgrade path is to first upgrade to GeoMesa NiFi 3.5.1, and replace all the datastore-specific processors in the flow. This will ensure that the flow is still valid after upgrading to GeoMesa NiFi 4.0.0. The geomesa-accumulo2-nar has been replaced with geomesa-accumulo20-nar, and there is an additional geomesa-accumulo21-nar for Accumulo 2.1 support.

24.8.9. Scan Range Changes

GeoMesa will now generate a more accurate number of ranges based on geomesa.scan.ranges.target. Users who have configured this property should verify their setting is still appropriate, especially if set to a large value. Setting geomesa.scan.ranges.recurse to 7 will restore the old behavior if needed.

24.8.10. Partitioned PostGIS Query Changes

GeoMesa will now ignore queries that encompass the entire world in the partitioned PostGIS data store. For more information, refer to Configuring Filter Optimizations.