首页 文章

在geomesa cassandra中进行大量的范围扫描

提问于
浏览
0

我正在尝试测试几何cassandra后端 .

我从OSM中获取了大约2M点,并使用带有geotools ecql的geomesa将 DWITHINBBOX 查询发送到cassandra .

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

Cassandra安装在Linux机器上,具有16核xeon,32GB RAM和1个SSD驱动器 . 我每秒得到 ~150 个查询 .

我开始研究我的查询的几何执行计划 .

来自 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 看起来很大 .

你能解释一下导致几何物发送如此大量范围扫描的原因吗?

有没有办法减少范围扫描的数量?

也许有一些配置选项?

还有其他选择吗?喜欢减少z-index的预设以改善这种查询?

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

1 回答

  • 2

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

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

    创建简单要素类型模式时,还可以禁用分片,默认为4.生成的范围数将乘以分片数 . 见herehere .

    如果您要查询多个'time bins'(默认为几周),则范围数将乘以您要查询的时间段数 . 您可以在创建架构时将其设置为更长的时间间隔;见here .

    谢谢,

相关问题