7.8. 运行时配置¶
GeoMesa将系统属性用于各种运行时配置选项。为了方便起见,可以在XML文件中指定属性,而不是在命令行中指定。运行时,GeoMesa将加载该文件 geomesa-site.xml
从类路径(如果可用),并使用在那里配置的任何属性。
确保该文件在类路径的根级别可用。在GeoMesa命令行工具中,将其放在 conf
文件夹。对于Geoserver,将其放置在 geoserver/WEB-INF/classes
。
每个工具分发都包含一个模板文件,位于 conf/geomesa-site.xml.template
这可以作为一个起点。请勿直接修改此文件,因为它永远不会被读取;相反,请将所需配置复制到 geomesa-site.xml
。
默认情况下,通过命令行参数设置的系统属性优先于配置文件。如果希望配置项始终优先于命令行参数,请更改 <final>
标记为True。
不会应用具有空值的配置属性,您可以通过将属性标记为最终属性来更改此设置。
7.8.1. 常见属性¶
这些属性适用于所有GeoMesa实现。不同后端数据库的其他属性可以在每个后端数据库的章节中找到。
7.8.1.1. geomesa.arrow.format.version¶
设置Arrow编码响应的IPC格式版本。这应该是有效的Arrow版本,即 0.16
或 0.10
。Arrow IPC格式从版本开始略有更改 0.15
。
7.8.1.2. geomesa.audit.provider.impl¶
此属性指定要使用的审核提供程序实现的完全限定类名。有关详细信息,请参阅 查询审计 。
7.8.1.3. geomesa.convert.config.urls¶
此属性允许将GeoMesa转换器配置添加到环境中。它可以设置为逗号分隔的任意URL列表。有关转换器的更多信息,请参见 GeoMesa转换器 。
7.8.1.4. geomesa.convert.scripts.path¶
此属性允许将文件添加到类路径。它应该设置为冒号分隔的文件路径列表。这对于将脚本放到类路径上以供map-duce摄取作业使用非常有用。
7.8.1.5. geomesa.density.batch.size¶
此属性控制用于运行分布式密度(热图)查询的批次大小。它需要在发出请求的客户端(例如Geoserver)上设置。如果查询在完成前关闭或取消,则批处理大小将决定分布式扫描在看到取消之前将保持运行多长时间。
7.8.1.6. geomesa.distributed.lock.timeout¶
该属性控制数据存储在执行架构操作之前等待获取分布式锁的时间长度 (createSchema
, updateSchema
和 removeSchema
)。由于GeoMesa通常是并行运行的,因此在不同进程之间获取分布式锁可防止因多个线程同时更改模式而导致的元数据损坏。超时被指定为持续时间,例如 1 minute
或 30 seconds
,缺省值为 2 minutes
。
7.8.1.7. geomesa.distributed.version.check¶
此属性可用于检查分布式类路径中的版本不匹配。启用后,如果GeoMesa检测到本地类路径和分布式类路径(例如HBase区域服务器或Acumulo平板服务器)之间存在重大版本差异,则会抛出异常,因为这通常会导致查询失败。如果未启用,则不会主动检测类路径错误,并可能导致运行时异常。
7.8.1.8. Geomesa.feature.id-generator¶
此属性控制用于为简单要素生成ID的默认实现 USE_PROVIDED_FIDS
或 PROVIDED_FID
功能中未设置提示。它应设置为实现的类的完全限定类名 org.locationtech.geomesa.utils.uuid.FeatureIdGenerator
。
GeoMesa包括一个实现类 org.locationtech.geomesa.utils.uuid.Z3FeatureIdGenerator
,这将部分基于要素的默认时间和几何图形创建唯一的要素ID。如果未指定任何其他内容,则默认使用此类,并且应该可以在大多数情况下很好地工作。
7.8.1.9. geomesa.filter.hash.threshold¶
计算表单的筛选器 name = 'john' OR name = 'jane' OR name = 'doe'
如果子句的数量很多,则可能会很慢。GeoMesa将通过将它们转换为散列查找而不是顺序比较来优化此类过滤器。此属性控制切换到哈希查找的阈值。默认情况下,阈值为 5
。
请注意,对于具有分布式筛选功能的数据存储(例如,HBase和Acumulo),需要在分布式处理节点上设置此属性。
7.8.1.10. geomesa.filter.remote.cache.expiry¶
此属性控制远程进程(即HBase区域服务器和Acumulo Tablet服务器)在内存中缓存查询筛选器的时间。对于重复查询,缓存筛选器可以缩短查询时间。但是,复杂的筛选器可能需要大量的内存开销。到期时间被指定为持续时间,例如 10 minutes
或 1 hour
。缺省值为 10 minutes
。
请注意,必须在每个区域或Tablet服务器上设置该属性才能生效。
7.8.1.11. geomesa.force.count¶
此属性控制GeoMesa如何计算结果集的大小(例如 FeatureSource.getCount
)。默认情况下,GeoMesa将使用统计数据估计结果集的大小。这将很快提供一个粗略的估计。一些应用程序依赖于预先知道结果集的确切大小,因此估计会带来问题。要强制GeoMesa计算结果集的确切大小,可以将此属性设置为 true
。您也可以使用查询提示在每个查询的基础上覆盖此行为 org.locationtech.geomesa.index.conf.QueryHints.EXACT_COUNT
。
7.8.1.12. geomesa.exact.count.max.features¶
有关的GeoTools API getCount
表示一个 maxFeatures
环境应该得到尊重。当 geomesa.force.count
或 QueryHints.EXACT_COUNT
为真并且MaxFeature低于此设置时,GeoMesa将运行查询以确定结果集中有多少条记录。否则,GeoMesa将使用Stats API并遵守计数设置。此设置的默认值为1000。
7.8.1.13. geomesa.geometry.length.max¶
此属性控制几何图形中允许的最大坐标数量。在反序列化过程中,损坏的数据可能会导致几何图形的长度不正确,这可能会导致尝试为大量坐标分配空间。此属性可用于设置将分配的空间的上限。默认情况下,没有最大长度。
7.8.1.14. geomesa.geometry.nesting.max¶
此属性以递归方式控制包含其他几何图形集合的几何图形集合的最大级别。在反序列化过程中,损坏的数据可能会导致几何图形的类型不正确,这可能会导致在递归循环中创建许多嵌套的几何图形集合,从而导致堆栈溢出。此属性可用于设置递归级别的上限。默认情况下,允许3级递归。
7.8.1.15. geomesa.geometry.processing¶
此属性控制查询几何图形相对于逆子午线的处理方式。可接受的值是以下值之一 spatial4j
或 none
。 spatial4j
(默认)将使用Spatial4J库,该库将跨度超过180度的几何体解释为绕反子午线反转的几何体。要防止几何图形被反转,请每180度添加一次路点。 none
将从字面上解释几何图形。在这种情况下,要围绕反子午线进行查询,请使用OR过滤器或几何图形集合。
例如,以下滤镜都指定了反子午线周围的2度区域:
// spatial4j processing
"intersects(geom, 'POLYGON((-179 90, 179 90, 179 -90, -179 -90, -179 90))')"
// no processing
"intersects(geom, 'MULTIPOLYGON(((-179 90, -180 90, -180 -90, -179 -90, -179 90)),((179 90, 180 90, 180 -90, 179 -90, 179 90)))')"
而以下滤镜都指定了一个358度的全球覆盖多边形:
// spatial4j processing
"intersects(geom, 'POLYGON((-179 90, 0 90, 179 90, 179 -90, 0 -90, -179 -90, -179 90))')"
// no processing
"intersects(geom, 'POLYGON((-179 90, 179 90, 179 -90, -179 -90, -179 90))')"
7.8.1.16. geomesa.ilike.max.length¶
控件的最大长度 ilike
将由GeoMesa解析以进行属性索引查询的谓词。必须为每个可能的案例枚举不区分大小写的匹配,这将导致查询范围呈指数级增加。缺省值为 10
,这将导致1024个范围。
7.8.1.17. geomesa.ingest.local.batch.size¶
通过命令行工具控制本地接收的批次大小。默认情况下,将每20,000个要素刷新一次要素编写器。
7.8.1.18. geomesa.metadata.expiry¶
此特性控制从基础数据存储读取简单要素类型元数据的频率。呼叫至 updateSchema
在元数据缓存到期之前,数据存储上的不会显示在其他实例中。到期时间被指定为持续时间,例如 10 minutes
或 1 hour
。缺省值为 10 minutes
。
7.8.1.19. geomesa.partition.scan.parallel¶
此属性控制如何对多个分区表执行扫描。默认情况下,扫描将按顺序执行。如果设置为 true
,它们将被并行执行。看见 配置分区索引 以了解有关分区的详细信息。
7.8.1.20. geomesa.query.cost.type¶
此属性控制GeoMesa执行查询规划的方式。默认情况下,GeoMesa使用试探法来确定给定查询的最佳索引。或者,可以将此属性设置为 stats
使用缓存数据统计和基于成本的查询规划。也可以使用查询提示在每个查询的基础上覆盖此设置 org.locationtech.geomesa.index.conf.QueryHints.COST_EVALUATION_KEY
设置为 org.locationtech.geomesa.accumulo.index.QueryPlanner.CostEvaluation.Stats
或 org.locationtech.geomesa.accumulo.index.QueryPlanner.CostEvaluation.Index
。看见 查询规划 有关查询规划策略的更多详细信息,请参阅。
7.8.1.21. geomesa.query.decomposition.bits¶
除了……之外 geomesa.query.decomposition.multiplier
, below, geomesa.query.decomposition.bits
sets a lower threshold on the size of the envelopes. It must be between 1 and 63, inclusive. See the Wikipedia article on GeoHashes 用于给定数量的比特的近似空间范围。
7.8.1.22. geomesa.query.decomposition.multiplier¶
GeoMesa根据查询中的空间谓词创建扫描范围。对于复杂的空间谓词,GeoMesa会将几何体分解成更小的矩形包络,从而避免扫描不与几何体相交的行。可以通过两个属性控制此行为。
geomesa.query.decomposition.multiplier
控制几何体将分解成的最大封套数量。如果设置为低于2,则不会执行分解,而是使用几何体封套。另请参阅 geomesa.query.decomposition.bits
上图。
7.8.1.23. geomesa.query.processing.or.threshold¶
GeoMesa尝试处理输入过滤器,以确定给定谓词的最佳查询计划。但是,由于查询可能是任意复杂的,因此此处理可能会花费大量时间。 geomesa.query.processing.or.threshold
根据筛选器的排列设置要考虑的OR筛选器复杂性阈值。例如,过滤器 A OR B OR C
有三种排列,而 (A OR B) AND (C OR D)
有四种排列。
默认情况下,不会考虑复杂的OR谓词,这适用于大多数查询。
7.8.1.24. geomesa.query.timeout¶
此属性可用于防止长时间运行的查询使系统过载。设置后,查询将在超时后关闭,即使尚未返回所有结果。超时被指定为持续时间,例如 1 minute
或 30 seconds
。
7.8.1.25. Geomesa.scan.block-full-table¶
此属性将阻止执行全表扫描。全表扫描是不能使用搜索索引限制的任何查询,因此需要扫描整个数据集。对于大数据集,这样的扫描可能会持续很长时间,并且会占用大量资源。该属性被指定为布尔值,即 true
或 false
。
为了获得更精确的信息,还可以为各个模式指定全表扫描行为 (SimpleFeatureTypes
)。使用 geomesa.scan.<type-name>.block-full-table
,在哪里 <type-name>
替换为架构名称(例如“GDELT”)。为单个架构设置的属性将优先于全局定义的行为。
7.8.1.26. Geomesa.scan.block-full-table.threshold¶
此属性与 geomesa.scan.block-full-table
上图。如果查询对返回的要素数量施加了合理限制(通过使用 maxFeatures
),则不会被阻止。该属性被指定为整数。默认情况下,允许1000或更少的限制。
7.8.1.27. geomesa.scan.ranges.recurse¶
此属性控制生成扫描范围时将使用的最大递归级别。较高级别的递归将生成更准确的范围,但代价是查询规划时间较长,而较低级别的递归将产生相反的结果。默认情况下没有限制。通常不需要配置它,设置它可能会将生成的范围限制为基本上小于 geomesa.scan.ranges.target
。它被指定为一个整数。
7.8.1.28. geomesa.scan.ranges.target¶
此属性为将为单个查询扫描的行范围数提供了大致的上限。它被指定为一个数字。通常,范围越大,扫描的假阳性行就越少,这将加快大多数查询的速度。然而,太多的范围可能需要很长时间才能生成,并会使客户端不堪重负,从而导致速度减慢。最佳值取决于环境。
7.8.1.29. geomesa.serializer.cache.expiry¶
此属性控制简单功能序列化程序将在内存中缓存多长时间。降低此值可能会减少应用程序的内存占用,但会增加处理时间。到期时间被指定为持续时间,例如 10 minutes
或 1 hour
。缺省值为 1 hour
。
7.8.1.30. geomesa.sort.memory.threshold¶
此属性可用于约束用于对结果集进行排序的内存。GeoMesa在客户端进程内存中对结果进行排序,因为受支持的后端数据库不提供本机排序。为了避免较大的结果集超出客户端内存容量,可以设置内存阈值。一旦结果集的大小超过此阈值,其他结果将被写入磁盘并在那里进行排序。请注意,实际使用的内存可能会超过阈值,因为内存占用计算是一个估计值。阈值被指定为字节数,例如 10MB
或 1GB
。默认设置是始终在内存中进行排序。
请注意,由于Arrow结果批处理的性质,分布式Arrow查询永远不会使用磁盘进行排序。对于受支持的后端,可以通过禁用远程Arrow处理在磁盘上对Arrow查询进行排序。
7.8.1.31. geomesa.sft.config.urls¶
此属性允许将GeoMesa简单要素类型配置添加到环境中。它可以设置为逗号分隔的任意URL列表。有关定义类型的更多信息,请参见 定义简单要素类型 。
7.8.1.32. geomesa.stats.batch.size¶
此属性控制用于运行分布式STAT查询的批处理大小。它需要在发出请求的客户端(例如Geoserver)上设置。如果查询在完成前关闭或取消,则批处理大小将决定分布式扫描在看到取消之前将保持运行多长时间。
7.8.1.33. geomesa.stats.generate¶
此属性控制GeoMesa是否在接收过程中为给定要素类型生成统计信息。它被指定为布尔值, true
或 false
。首次创建要素类型时,如果未在要素类型用户数据中显式配置统计数据或通过 geomesa.stats.enable
数据存储参数。看见 配置缓存的统计信息 有关配置功能类型的详细信息,请参阅。请注意,统计数据目前仅针对Acumulo和Redis数据存储实现。
7.8.1.34. geomesa.strategy.decider¶
此属性允许在查询规划期间重写策略选择。它应该为实现的类指定完整的类名 org.locationtech.geomesa.index.planning.StrategyDecider
。该类必须具有无参数的构造函数。
默认情况下,GeoMesa将使用基于启发式的查询规划,这在大多数情况下都可以很好地工作。看见 查询规划 有关查询规划策略的更多详细信息,请参阅。