几何范围cassandra中的大量范围扫描

时间:2018-04-19 14:27:48

标签: geomesa

我正在尝试测试几何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 个答案:

答案 0 :(得分:2)

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

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

创建简单要素类型架构时,还可以禁用分片,默认为4.生成的范围数将乘以分片数。请参阅herehere

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

谢谢,