23. 升级指南

本部分包含有关版本升级的一般信息,以及可能影响最终用户的特定于版本的更改。

23.1. 跨版本的兼容性

23.1.1. 语义版本化

从2.0.0开始,GeoMesa坚持 semantic versioning 。从本质上讲,发布分为主要版本、次要版本和补丁版本。对于像2.0.1这样的版本号,2是主要版本,2.0是次要版本,2.0.1是补丁版本。

主要版本更新包含突破性的公开API更改。次要版本更新包含向后兼容的新功能或更新功能。补丁版本只包含向后兼容的错误修复。这一划分使用户能够衡量更新版本的潜在影响。

警告

2.0.0之前的版本不遵循语义版本控制,每个版本都应该被视为一个重大的版本更改。

23.1.2. 兼容性

语义版本控制提供了API保证,但GeoMesa有几个兼容性向量需要考虑:

23.1.2.1. 数据兼容性

数据兼容性指的是读写使用旧版本的GeoMesa写入的数据的能力。GeoMesa完全支持1.2.2或更高版本写入的数据,大部分支持1.1.0或更高版本写入的数据。

请注意,虽然较高版本可以读取较早的数据,但反之亦然。使用较新的客户端写入的数据可能无法被较旧的客户端读取。

使用1.2.1或更早版本写入的数据可以迁移到较新的数据格式。看见 升级现有索引 有关详细信息(请注意,此功能目前仅针对Acumulo实现)。

23.1.2.2. API兼容性

GeoMesa公共API当前未明确定义,因此仅在GeoTool中保证API兼容性 DataStore 水平。将来,GeoMesa将明确指出哪些类和方法是公共API的一部分。在次要版本之间,非公共类可能会在没有警告的情况下发生更改。

23.1.2.3. 二进制兼容性

二进制兼容性指的是在单个环境中拥有不同的GeoMesa版本的能力。环境可以是单个进程,也可以跨越多个服务器(例如,接收管道、查询客户端和分析平台)。对于具有分布式组件(HBase和Acumulo)的数据存储,环境包括客户端和分布式代码。

GeoMesa要求环境中的所有JAR都是相同的次要版本,并且单个JVM中的所有JAR都是相同的补丁版本。

23.1.2.4. 依赖项兼容性

依赖兼容性是指无需更新其他组件(如Acumulo、HBase、Hadoop、Spark、Geoserver等)即可更新GeoMesa的能力。一般来说,GeoMesa支持一系列依赖版本(例如,Acumulo 1.6到1.9)。由于使用了私有的Spark API,Spark版本的耦合更加紧密。

23.1.2.5. 预发行代码

GeoMesa有时会提供阿尔法或贝塔状态的模块。尽管它们共享整个GeoMesa版本号,但这些模块应该被视为1.0之前的版本,并且不保证提供任何跨版本的向前或向后兼容性。预发行版模块将在文档中明确标记。

23.1.3. 兼容性表

主修

小调

补片

数据

Y

Y

Y

API

N

Y

Y

二进位

N

N

Y

相依性

N

N

Y

23.2. 版本4.1.0升级指南

23.2.1. 依赖项版本升级

已升级以下依赖项:

  • 春季安全 5.8.0 -> 5.8.3

23.2.2. 不推荐使用的类和方法

以下类已弃用,并将在未来版本中删除:

  • org.locationtech.geomesa.kafka.confluent.SchemaParser.GeoMesaAvroDeserializableEnumProperty

23.3. 版本4.0.0升级指南

23.3.1. 版本兼容性

GeoMesa 4.0.0专注于升级依赖版本和移除不推荐使用的功能,并且只包含一些新功能。为了使升级更容易,4.0.x版通常在不同环境下与3.5.x版兼容。这意味着可以部分升级;例如,将Geoserver升级到4.0.0,但将NiFi保持在3.5.1。请注意,一旦环境的任何部分升级到4.0.0,以前不推荐使用的功能(见下文)可能不再起作用。

23.3.2. Scala版本

Scala 2.11支持被移除,而Scala 2.13支持被添加(除了现有的Scala 2.12支持之外)。

23.3.3. GeoTool/Geoserver版本

GeoTools已从 23.328.2 。Geoserver已从 2.17.32.22.2 。JTS已从 1.17.01.19.0

作为此次升级的一部分,各种GeoTools方法以不兼容的方式进行了更改。特别是几个班级 QuerySimpleFeatureBuilder ,已经从接受数组改为使用varargs(变量参数)。此外,各种不同的 DataStore 方法,如 DataStoreFinder ,现在需要 Map<String, ?> 而不是 Map<String, ? extends Serializable>

23.3.4. 依赖项版本升级

升级了以下高级依赖项:

  • 阿帕奇Hadoop 2.8.5 -> 2.10.2

  • 阿帕奇火花 2.4.7 -> 3.3.1

  • 阿帕奇累积图 2.0.0 -> 2.0.1

  • 阿帕奇HBase 1.4.12 -> 1.4.142.2.3 -> 2.5.2

  • 阿帕奇·卡夫卡 2.1.1 -> 2.8.2

  • 阿帕奇箭头 0.16.0 -> 11.0.0

  • 阿帕奇·阿夫罗 1.8.2 -> 1.11.1

  • 阿帕奇镶木地板 1.9.0 -> 1.12.3

  • 阿帕奇ORC 1.5.4 -> 1.8.2

  • 绝地武士 3.0.1 -> 4.3.1

  • 融合 5.1.0 -> 6.2.7

  • Kryo 3.0.3 -> 4.0.2

  • 类型安全配置 1.3.3 -> 1.4.2

  • EJML 0.34 -> 0.41

  • 撒克逊人 9.7.0-20 -> 11.4

有关所有依赖项的完整更改列表,请参阅 here

23.3.5. 最低库版本

已放弃对某些库的旧版本的支持。现在需要以下最低版本:

  • 阿帕奇累积图 2.0.0 (放弃了对 1.71.81.9 ,以及 1.10 )

  • 阿帕奇火花 3.0 (放弃了对 2.4 )

  • 阿帕奇·卡夫卡 2.0 (放弃了对 0.100.111.0 ,以及 1.1 )

23.3.6. 删除不推荐使用的模块

已删除以下不推荐使用的模块:

  • Geomesa-Bigtable

  • Geomesa-kudu

  • 风景区-溪流

  • Geomesa-gejson

  • Geomesa-Web

  • Geomesa-Feature-nio

  • Geomesa-转换-指标-云表

  • Geomesa-转换指标-Ganglia

  • Geomesa.换算.公制.石墨

此外,还删除了其他各种不推荐使用的类和方法。要识别任何需要更改的代码,请根据GeoMesa 3.5.1构建您的项目,并注意编译器生成的任何弃用警告。

23.3.7. 套餐更改

为了支持Java 11模块,移动、重命名或拆分了以下程序包:

  • 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

23.3.8. GeoMesa NiFi变化

GeoMesa NiFi现在是针对NiFi 1.19.1构建的。GeoMesa Nars和Jars已重新命名,以包括Scala版本(即 geomesa-datastore-services-nar_2.12-4.0.0.nar )。特定于数据存储的处理器(例如 PutGeoMesaHBase )已被删除,转而支持通用处理器(例如 PutGeoMesa )。推荐的升级路径是首先升级到GeoMesa NiFi 3.5.1,然后更换流程中所有特定于数据存储区的处理器。这将确保流在升级到GeoMesa NiFi 4.0.0后仍然有效。这个 geomesa-accumulo2-nar 已被替换为 geomesa-accumulo20-nar ,并且还有一个额外的 geomesa-accumulo21-nar 支持Acumulo 2.1。

23.3.9. 扫描范围更改

GeoMesa现在将根据以下条件生成更准确的范围数 geomesa.scan.ranges.target 。已配置此属性的用户应验证其设置是否仍然合适,特别是在设置为较大值的情况下。设置 geomesa.scan.ranges.recurse7 如果需要,将恢复旧的行为。

23.3.10. 分区的PostGIS查询更改

GeoMesa现在将忽略分区的PostGIS数据存储中覆盖整个世界的查询。有关详细信息,请参阅 配置过滤器优化

23.4. 版本3.5.0升级指南

23.4.1. 删除Log4j

GeoMesa已更新,禁止所有使用 log4j, to mitigate various CVEs present in that framework. In most cases, GeoMesa uses slf4j, and delegates to the logging framework of the runtime environment. However, this change impacts the JARs bundled with the command-line tools, which now ship with reload4j 取而代之的是。使用GeoMesa的其他环境(即Geoserver)必须独立加强。

23.4.2. 卡夫卡系列化

GeoMesa Kafka数据存储现在支持新的串行化格式, avro-native 。此格式使用Avro数组和贴图类型 ListMap 输入属性,这使得使用标准Avro工具更容易阅读。请注意,3.5.0之前的GeoMesa版本将不能使用以此格式编写的主题。

23.4.3. 不推荐使用的模块

以下模块已弃用,并将在未来版本中删除:

  • GeoMesa Bigtable

23.4.4. 依赖关系更新

  • Org.slf4j:slf4j-api: 1.7.25 -> 1.7.36

  • Com.google.code.gson:gson: 2.8.1 -> 2.8.9

23.5. 版本3.3.0升级指南

23.5.1. Scala版本

默认情况下,GeoMesa NiFi Nars现在附带Scala 2.12。这在很大程度上对最终用户应该是透明的,然而,任何在NiFi中使用并用Scala编写的定制GeoMesa转换器JAR都需要使用Scala 2.12编译。

23.6. 版本3.2.0升级指南

23.6.1. Scala版本

GeoMesa现在支持Scala 2.12。Scala 2.11支持已被弃用,并将在未来的版本中删除。

23.6.2. 火花版

GeoMesa现在支持Spark 3.0和3.1。对Spark 2.3和2.4的支持已被弃用,并将在未来版本中删除。

23.6.3. 依赖关系更新

  • Com.fasterxml.jackson: 2.9.10 -> 2.12.1

23.6.4. 文件系统数据存储元数据格式更改

文件系统数据存储区的元数据格式已更改,以支持存储任意键-值对。早期版本的GeoMesa将无法读取使用3.2.0或更高版本写入的任何数据。

23.6.5. Lambda数据存储二进制分布更改

Lambda数据存储二进制分发版不再包含 geomesa-accumulo-distributed-runtime 罐子。此JAR在Acumulo数据存储二进制分发版中可用。

23.6.6. Strategy Decider API更新

这个 org.locationtech.geomesa.index.planning.StrategyDecider API已扩展为可选的 GeoMesaStats 支持基于统计数据的战略决策的参数。旧的API方法已被弃用,并将在未来的版本中删除。

23.6.7. 不推荐使用的模块

以下模块已弃用,并将在未来版本中删除:

  • 格梅萨库杜

  • GeoMesa流(骆驼集成)

  • GeoMesa网站

  • GeoMesa GeoJSON

23.6.8. 不推荐使用的箭头输出选项

用于提供缓存词典、返回多个逻辑文件和分两次运行查询的Arrow输出选项已被弃用,将在下一个主要版本中删除。

23.7. 版本3.1.0升级指南

23.7.1. Maven类型的Geoserver插件模块

所有的 geomesa-*-gs-plugin 文物已更改为 <type>pom</type> ,因为它们不包含任何代码。任何 pom.xml 应该更新对它们的引用以使用正确的类型。

23.7.2. Avro版本更新

GeoMesa使用的Avro版本已从1.7.5更新到1.8.2。Avro序列化文件应在不同版本之间兼容,但如果项目使用Avro并引用GeoMesa,则可能需要更新编译和运行时依赖项。

23.7.3. 查询拦截器API更改

查询拦截器API已扩展为支持查询卫士。任何现有的查询拦截器实现都将继续工作,但可能需要针对GeoMesa 3.1.0重新编译。

23.7.4. 依赖关系更新

  • GeoTools: 23.0 -> 23.3

  • Avro: 1.7.5 -> 1.8.2

23.8. 3.0.0版升级指南

23.8.1. 删除不推荐使用的模块和类

GeoMesa 3.0.0删除了几个较少使用的模块,以及各种过时的类和方法。

移除的模块包括: geomesa-accumulo/geomesa-accumulo-computegeomesa-accumulo/geomesa-accumulo-native-apigeomesa-accumulo/geomesa-accumulo-raster-distributed-runtimegeomesa-accumulo/geomesa-accumulo-rastergeomesa-accumulo/geomesa-accumulo-securitygeomesa-accumulo/geomesa-accumulo-stats-gs-plugingeomesa-convert/geomesa-convert-scriptinggeomesa-convert/geomesa-convert-simplefeaturegeomesa-hbase/geomesa-hbase-native-apigeomesa-metricsgeomesa-native-apigeomesa-spark/geomesa-spark-geotoolsgeomesa-blobstore/* ,以及 geomesa-web/geomesa-web-data

中详细介绍了删除的类和方法 GEOMESA-2284

23.8.2. HBase 2支持

GeoMesa 3.0.0同时支持HBase 1.4和HBase 2.2。不再支持HBase 1.3。HBase 2.0和2.1不受官方支持,但在某些情况下可能会起作用。

现在有两个独立的模块用于HBase过滤器和协处理器- geomesa-hbase-distributed-runtime-hbase1geomesa-hbase-distributed-runtime-hbase2 。上一次 geomesa-hbase-distributed-runtime 模块已被移除。用户应该安装与他们的HBase安装对应的分布式运行时。

同样,现在有两个独立的模块支持HBase Spark- geomesa-hbase-spark-runtime-hbase1geomesa-hbase-spark-runtime-hbase2 。上一次 geomesa-hbase-spark-runtime 模块已被移除。用户应该使用与其HBase安装对应的Spark运行时。

23.8.3. 支持Acumulo 2

GeoMesa 3.0.0在Hadoop 2.8上支持Acumulo 1.9,在Hadoop 3上支持Acumulo 2.0。不再支持Acumulo的早期版本,但在某些情况下可能会起作用。

现在有两个独立的模块用于Acumulo Spark支持- geomesa-accumulo-spark-runtime-accumulo1geomesa-accumulo-spark-runtime-accumulo2 。上一次 geomesa-accumulo-spark-runtime 模块已被移除。用户应使用与其Acumulo安装对应的Spark运行时。

23.8.4. NiFi处理器

GeoMesa NiFi处理器已更新到NiFi 11,并拆分成独立的 nar 每个受支持的后端数据库的文件。此外,还有单独的 nar 分别用于HBase 1.4/2.2和Acumulo 1.9/2.0的文件。处理器类别和配置也发生了变化。看见 GeoMesa NiFi捆绑包 了解更多细节。

23.8.5. 依赖关系更新

  • 阿帕奇箭头: 0.10 -> 0.16

23.8.6. 阿帕奇箭头更新

作为升级到ApacheArrow 0.16的一部分,geomesa-arrow模块进行了重构,以简化内存管理和分配。一些类已被删除,一些接口已更改。这可能会影响任何直接使用geomesa-arrow模块的人。

Arrow 0.15中更改了Arrow IPC格式。默认情况下,较旧的客户端可能无法读取Arrow编码的结果。要启用传统的Arrow IPC格式,请设置系统属性 geomesa.arrow.format.version0.10 ,或使用查询提示 ARROW_FORMAT_VERSION 。看见 箭头编码 了解更多细节。

23.8.7. 转换器日期函数

转换器功能 isoDateisoDateTime 已更新,以匹配等效的Java DateTimeFormatter 图案。 isoDate 已经从 yyyyMMddyyyy-MM-dd ,而 isoDateTime 已经从 yyyyMMdd'T'HHmmss.SSSZyyyy-MM-dd'T'HH:mm:ss 。旧模式仍然可以通过 basicDatebasicDateTime

23.8.8. AuthorizationsProvider和AuditProvider API更改

的签名 org.locationtech.geomesa.security.AuthorizationsProvider#configureorg.locationtech.geomesa.utils.audit.AuditProvider#configure 略有不同 void configure(Map<String, Serializable> params)public void configure(Map<String, ? extends Serializable> params) 。实现这些接口之一的任何类都需要更新它们的方法签名。调用这些方法的任何类都不需要更新,因为新签名与旧签名兼容。

23.8.9. 已删除Acumulo默认可见性

Acumulo数据存储参数 geomesa.security.visibilities 已经被移除了。可见性应按功能设置,如中所述 数据安全

23.9. 版本2.4.0升级指南

23.9.1. GeoTools 21和Geoserver 2.15

GeoMesa 2.4.0是针对GeoTools 21.1和Geoserver 2.15编译的。此版本的GeoTools包含支持Java 11的包和类位置更改。由于这些更改,GeoMesa将不再与旧版本的GeoTools和Geoserver一起使用。

23.9.2. 配置缓存的统计信息

GeoMesa 2.4.0将缓存统计信息的配置从数据存储参数(每次都必须设置该参数)移动到要素类型用户数据(在创建模式时设置一次,并且仅通过显式模式更新进行更改)。看见 配置缓存的统计信息 了解更多详细信息。

在早期版本中创建的要素类型将继续执行以前的操作,每次的配置由数据存储参数确定。配置可以通过永久设置 updateSchema 数据存储方法或 update-schema CLI命令。

23.9.3. 时间戳属性的索引

GeoMesa 2.4.0完全支持索引 java.sql.Timestamp 属性。在以前的版本中,时间戳属性索引不受官方支持,但它们在某些情况下确实有效。GeoMesa 2.4.0将无法再读取使用旧版本写入时间戳属性索引的任何数据。要迁移旧数据, truncate the index table 首先,然后重写所有现有记录:

import org.geotools.data.{DataStoreFinder, Query, Transaction}
import org.locationtech.geomesa.index.geotools.GeoMesaDataStore
import org.locationtech.geomesa.utils.geotools.FeatureUtils

val params: java.util.Map[String, String] = ??? // data store connection parameters
val ds: GeoMesaDataStore[_] = DataStoreFinder.getDataStore(params).asInstanceOf[GeoMesaDataStore[_]]
val typeName: String = ??? // simple feature type name to update
val timestamps: Seq[String] = ??? // names of any timestamp-type attributes
val indices = ds.manager.indices(ds.getSchema(typeName)).filter(_.attributes.headOption.exists(timestamps.contains))
val writer = ds.getIndexWriterAppend(typeName, indices)
val features = ds.getFeatureReader(new Query(typeName), Transaction.AUTO_COMMIT)
try {
  while (features.hasNext) {
    FeatureUtils.write(writer, features.next(), useProvidedFid = true)
  }
} finally {
  features.close()
  writer.close()
}

23.9.4. NiFi处理器更换

GeoMesa NiFi处理器已经进行了重构,以支持NiFi NAR继承,并作为支持Java 11的第一步。只要您不删除旧的GeoMesa nar文件,任何现有的处理器都将继续在旧版本下工作。但是,您需要创建新的处理器才能升级到2.4.0。

23.9.5. 分发安装捆绑包

从GeoMesa 2.4.0开始,安装包(二进制分发版和Geoserver插件tar文件)将不再托管在Maven Central上。它们将继续在以下时间提供 GitHub 以及 Locationtech Maven Repository 。请注意,这只适用于大型安装包;GeoMesa将继续将JAR文件发布到Maven Central。

23.9.6. HBase Geoserver插件安装

GeoMesa HBase Geoserver插件安装tar文件已更新,删除了带阴影的HBase客户端JAR。现在必须单独安装适用于您的HBase版本的客户端JAR。看见 在Geoserver中安装GeoMesa HBase 了解更多细节。

如果需要,着色的GeoMesa JAR仍可从Maven获得,因为 org.locationtech.geomesa:geomesa-hbase-gs-plugin_2.11 使用分级器 shaded 。然而,这很可能会在下一个主要版本中删除。

23.10. 版本2.3.0升级指南

23.10.1. 默认查询规划类型

GeoMesa 2.3.0将默认的查询规划类型从基于统计更改为基于启发式。这只会影响Acumulo数据存储,因为其他存储还没有实现统计。要启用基于统计的查询规划,请参阅 查询规划类型

23.10.2. 不变的简单要素类型

GeoMesa 2.3.0从调用返回不可变对象 getSchema 。这允许重用SimpleFeatureType实例,从而减少开销。在大多数情况下,这不会对最终用户产生影响,但是请注意,可变和不可变的要素类型永远不会 equals 当直接比较时。

为了更新架构,或者如果出于某些其他原因需要可变性,则调用 org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes.mutable() 来创建一个可变的副本。Java用户可以调用 org.locationtech.geomesa.utils.interop.SimpleFeatureTypes.mutable() 取而代之的是。

23.10.3. 文件系统存储API更改

文件系统存储API仍被视为测试级软件,并已在此版本中进行了更新。数据存储区API没有更改,但此版本中的内部类接口已更改,这可能需要更改用户代码。

此外,用于存储元数据文件的格式已更新,因此旧版本的GeoMesa将无法读取使用此版本创建的元数据。

23.10.4. 不推荐使用的模块

以下模块已弃用,并将在未来版本中删除:

  • GeoMesa栅格

  • GeoMesa原生API

  • GeoMesa Blob商店

  • GeoMesa指标

23.11. 版本2.2.0升级指南

23.11.1. GeoTools 20和Geoserver 2.14

GeoMesa 2.2.0是针对GeoTools 20.0和Geoserver 2.14编译的。此版本的GeoTools将JTS从1.14升级到1.16,其中包括项目到Locationtech的过渡。新版本的JTS将包从 com.vividsolutionsorg.locationtech.jts 。由于包重命名,GeoMesa将不再与旧版本的GeoTools和Geoserver一起使用。

警告

GeoMesa 2.2.0需要GeoTools 20.x和Geoserver 2.14.x。

23.11.2. Acumulo数据存储区地理服务器安装

使用Geoserver时,GeoMesa Acumulo数据存储现在需要Acumulo客户端Jars 1.9.2或更高版本。这是由于早期的Acumulo客户端和Geoserver 2.14之间的类路径冲突造成的。幸运的是,较新的Acumulo客户端可以与较旧的Acumulo实例对话,因此只需升级Geoserver中的客户端JAR,而不需要升级整个Acumulo集群。

23.12. 版本2.1.0升级指南

23.12.1. 转换器更新

已更新和简化了GeoMesa转换器API。旧的API已被弃用,虽然针对它编写的自定义转换器应该仍然有效,但鼓励用户迁移到 org.locationtech.geomesa.convert2.SimpleFeatureConverter 。提供了兼容性桥,以便向新的或旧的API注册的所有转换器对两者都可用。

转换器定义应该继续工作,但由于更严格的配置解析,一些无效的定义可能会开始失败。

23.12.1.1. XML转换器命名空间

XML解析现在是名称空间感知的。这应该不会影响大多数操作,但在XML Element对象上操作的任何自定义转换器函数都可能需要考虑到这一点(例如,自定义XPath查询)。

23.12.2. 分布式运行时版本检查

为了防止由于JAR版本不匹配而导致的意外错误,GeoMesa可以扫描分布式类路径以验证分布式类路径上的兼容版本。可以通过设置系统属性来启用此行为 geomesa.distributed.version.check=true

23.12.3. Shapefile摄取

通过GeoMesa命令行工具获取的shapefile已更改为使用转换器定义。这允许在摄取过程中对shapefile进行动态修改,但该命令现在需要用户确认。前面的行为可以通过传递 --force 到摄取指挥部。

23.12.4. 自动摄取分隔文本

GeoMesa以前支持自动摄取特殊格式的分隔CSV和TSV文件。此功能已被标准摄取类型推理所取代,后者的工作原理相似,但可能会产生不同的结果。通常,通过使用类型推断创建转换器定义,然后修改转换器以将要素ID设置为第一列,可以复制前面的行为 ($1 )。

23.12.5. 文件系统存储API更改

文件系统存储API仍被视为测试级软件,并已在此版本中进行了更新。数据存储区API没有更改,但此版本中的内部类接口已更改,这可能需要更改用户代码。

此外,用于存储元数据文件的格式已更新,因此旧版本的GeoMesa将无法读取使用此版本创建的元数据。当第一次访问较旧的元数据时,GeoMesa会将文件更新为新格式,这可能会破坏任何仍在使用的旧客户端。

最后, update-metadata Tools命令已被替换为 manage-metadata

23.12.6. Spark版本更新

GeoMesa现在基于Spark 2.3.1构建,并支持版本2.2.x和2.3.x。

23.12.7. Arrow版本更新

用于Arrow编码结果的ApacheArrow版本已从0.6.0更新到0.10.0。由于Arrow进程间通信(IPC)格式的更改,客户端可能需要更新到相同的Arrow版本。

23.12.8. Scalatra版本更新

用于Web Servlet的scalatra版本已更新到2.6.3。新版本需要json4s 3.5.4,这可能需要更改用于部署Servlet的Web服务器。

23.13. 版本2.0.0升级指南

23.13.1. GeoTools 18和Geoserver 2.12

GeoMesa 2.0.0是针对GeoTools 18.0和Geoserver 2.12编译的。升级Geoserver实例时,通常最好使用新的Geoserver数据目录重新开始。如果在运行GeoMesa 1.3.x或更早版本的现有Geoserver实例中升级GeoMesa,层仍可用,但您将无法编辑任何现有的GeoMesa存储。为了编辑商店,您需要删除它们,然后通过Geoserver用户界面重新创建它们。或者,您可以编辑Geoserver datastore.xml 文件(位于Geoserver数据目录中)以匹配新的GeoMesa数据存储参数(如下所述)。特别是,您将需要添加一个 namespace 参数,该参数与Geoserver存储的工作空间匹配。

23.13.2. 数据存储参数

调用中使用的数据存储参数 DataStoreFinder 和《火种》 SpatialRDDProvider 已经标准化了。新参数在各个数据存储页面中进行了概述:

较旧的参数名称将继续使用,但已弃用,可能会在未来的版本中删除。

23.13.3. 删除Joda时间

随着对 java.time in Java 8, the Joda Time project has been deprecated. As such, GeoMesa has removed its Joda dependency in favor of java.time. One consequence of this is that custom date patterns in geomesa-convert are interpreted slightly differently. See DateTimeFormatter 了解更多细节。

警告

特别是,“时代年”已从 YyY NOW的意思是“以周为基础的一年”,并且会给出不同的结果。

23.13.4. Saxon XML解析器

默认情况下,GeoMesa转换器XML模块现在随Saxon-HE一起提供。Saxon-HE在解析XML方面通常比默认的Java实现快得多。以前,Saxon是一个额外的下载版本。

警告

Saxon解析与默认Java实现有一些不同,这可能会导致现有的转换器定义失败。特别是,Saxon对XML名称空间的要求要严格得多。看见 使用Saxon处理命名空间 以获取更多信息。

23.13.5. 卡夫卡数据存储

Kafka数据存储已被重写为适用于所有支持的Kafka版本的单一实现。已移除对Kafka 0.8的支持。看见 卡夫卡数据存储 以获取更多信息。

23.13.6. 累积式标准化

为了标准化数据存储实现之间的行为, AccumuloDataStore 已被修改。

23.13.6.1. 属性索引覆盖率

使用指定的累积属性索引 index=true 现在将创建完整的属性索引,而不是连接索引。要创建联接索引,请显式指定 index=join 。现有架构不受影响。

23.13.6.2. 记录索引标识符

《累积体》 record 索引已重命名为 id 指数。通常情况下,这不会有任何影响,但是在指定 geomesa.indices.enabled ,价值 id 必须用来代替 records

23.13.6.3. 工具命令名

Acumulo命令行工具脚本已从重命名 geomesageomesa-accumulo

23.13.7. 表格拆分器

拆表接口已更改。任何定制的表拆分器实现 org.locationtech.geomesa.index.conf.TableSplitter 将需要为新的方法签名进行更新。此外,已弃用并替换了提供的GeoMesa拆分器。看见 配置索引拆分 了解更多详细信息。

23.13.8. 系统属性

与时间相关的系统属性已标准化,以使用所有可读持续时间。持续时间可以指定为一个数字后跟一个时间单位,例如 10 minutes30 seconds 。以下属性已更改为接受持续时间,有些属性已重命名。请注意,这将影响在JVM中设置的系统属性以及任何自定义 geomesa-site.xml 档案。更多详细信息,请参阅 运行时配置 或适当的数据存储配置节。

属性

以前的名字

geomesa.query.timeout

geomesa.query.timeout.millis

geomesa.metadata.expiry

不适用

geomesa.batchwriter.latency

geomesa.batchwriter.latency.millis

geomesa.batchwriter.latency

geomesa.batchwriter.latency.millis

geomesa.stats.compact.interval

geomesa.stats.compact.millis

geomesa.cassandra.read.timeout

geomesa.cassandra.read.timeout.millis

geomesa.cassandra.connection.timeout

geomesa.cassandra.connection.timeout.millis