0

我正在尝试测试 geomesa cassandra 后端。

我已经从 OSM 摄取了约 2M 点,并使用 geomesa 和 geotools ecql 向 cassandra发送DWITHIN和查询。BBOX

然后我做了一些性能测试,结果对我来说看起来并不合理。

Cassandra 安装到具有 16 核至强、32GB RAM 和 1 个 SSD 驱动器的 linux 机器上。我~150每秒收到查询。

我开始为我的查询调查 geomesa 执行计划。

来自org.locationtech.geomesa.index.utils.Explainer的跟踪日志真的很有帮助,他们很好地解释了正在发生的事情。

让我感到困惑的是通过 cassandra 进行的范围扫描的数量。

例如,我在日志中看到以下内容: Table: osm_poi_a7_c_osm_5fpoi_5fa7_attr_v2 Ranges (49): SELECT * FROM ..

该数字49表示发送到 cassandra 的实际范围扫描数。不同的查询给了我不同的结果,它们大约从 ~10 到 ~130 不等。

10对我来说看起来很合理,但130看起来很大。

您能否解释一下导致 geomesa 发送如此大量范围扫描的原因?

有什么办法可以减少范围扫描的次数?

也许有一些配置选项?

还有其他选择吗?像降低 z-index 的精度以改进此类查询?

不管怎么说,还是要谢谢你!

4

1 回答 1

2

通常,GeoMesa 在其各种后端实现中使用通用的查询计划算法。默认值更倾向于 HBase 和 Accumulo,它们支持具有大量范围的扫描。但是,您可以使用各种旋钮来修改行为。

您可以通过系统属性减少在运行时生成的范围数量geomesa.scan.ranges.target(请参阅此处)。请注意,这将是一个粗略的上限,因此您通常会获得比指定范围更多的范围。

创建简单特征类型模式时,您还可以禁用分片,默认为 4。生成的范围数将乘以分片数。见这里这里

如果您要查询多个“时间箱”(默认为周),则范围数将乘以您正在查询的时间箱数。您可以在创建架构时将其设置为更长的时间间隔;看这里

谢谢,

于 2018-04-19T15:08:21.487 回答