首页 文章

Geomesa查询性能

提问于
浏览
1

Geomesa 是一个空间时态数据库,更多详细信息可在此处获取:http://www.geomesa.org/

我正在尝试示例教程,通过它设置Hbase数据库 . 我正在运行Hbase QuickStart教程http://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html教程运行正常,下面是我在边界框的查询性能中注意到的一些问题 .

我已经插入了lat,lng范围(30,60)到(35,65)的数据

在这个设置中,我在本地机器上进行查询:
a)在我的第一个查询中,位置边界框是:(30,60)到(30.1,60.1),它在不到一秒的时间内平均运行并返回正确的结果 .
b)在第二个查询中,我将位置边界框(10,10)修改为(30.1,60.1) . 此查询还返回与查询(a)中相同的结果,这是预期的,但平均每个查询大约需要3-4秒 .

由于两个查询都应该给我相同的结果,但一个运行速度比另一个快得多 . 我注意到时域查询中的类似行为,如果时间范围与插入的数据不匹配,性能甚至更差(慢10倍甚至更多) . 以下是我的一些问题:
1)这是预期的行为吗?
2)我知道其中一个解决方案可以是重新格式化查询以映射到插入到Geomesa中的实际数据空间和时间范围,这将要求我维护有关数据的其他元数据 . 但是,我认为可以在Geomesa层设计更好的解决方案?

如果有某种设置等,请告诉我,这可能会影响此行为 . 通过设置Geomesa,我在多个其他本地计算机和 Cloud VMS上看到了相同的行为 .

1 回答

  • 2

    通常,GeoMesa仍然必须扫描可能存在数据的位置,即使实际上没有任何数据 . 即使没有返回数据,打开扫描也需要一些时间 . 对于时间查询,范围的数量往往更大,因此性能更慢 .

    我相信Accumulo处理这个比HBase好一点,因为它有一个接受多个范围的批处理扫描器的概念,并且它具有一些数据开始/结束的知识 . 对于HBase,GeoMesa必须使用thread pool运行多次扫描,因此效率不高 .

    GeoMesa也有数据统计的概念,但尚未针对HBase实现,目前还没有用于查询规划 .

    要缓解此问题,可以尝试增加"queryThreads"数据存储参数,以便在查询期间使用更多线程 . 如果您当前已将其禁用,也可以启用"looseBoundingBox" . 对于时间查询,增加temporal binning period可能会导致扫描的范围更少 . 但是,这可能会导致对非常小的时间范围的查询速度变慢,因此应根据您的使用情况进行调整 .

    最后请注意,确保已安装分布式协处理器和enabled,尤其是在不使用松散边界框的情况下 .

相关问题