2017-08-31 4 views
1

Geomesa eine räumliche zeitliche Datenbank ist, sind weitere Informationen finden Sie hier: http://www.geomesa.org/Geomesa Abfrageleistung

ich das Beispiel Tutorial versuchen, durch Hbase Datenbank mit ihm aufzubauen. Ich führe das Hbase QuickStart-Tutorial http://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html Das Tutorial läuft gut, unten sind einige der Probleme, die ich in der Abfrageleistung von Bounding Box bemerken.

Ich habe Daten mit lat, lng Bereich (30,60) bis (35,65)

eingefügt

In dieser Einstellung ist ich Abfrage auf meinem lokalen Rechner tun:
a) In meiner ersten Abfrage , die Positionsbegrenzungsbox ist: (30,60) bis (30,1,60,1), sie läuft im Durchschnitt in weniger als einer Sekunde und gibt korrekte Ergebnisse zurück.
b) In der zweiten Abfrage habe ich die Position Bounding Box (10,10) auf (30,1,60,1) geändert. Diese Abfrage gibt auch die gleichen Ergebnisse wie in Abfrage (a) zurück, die erwartet wird, aber im Durchschnitt dauert es etwa 3-4 Sekunden pro Abfrage.

Da beide Abfragen sollte mir die gleichen Ergebnisse geben, aber einer läuft viel schneller als der andere. Ich bemerke das ähnliche Verhalten in Zeitdomänenabfragen auch, wo die Leistung noch viel schlechter ist (10 mal langsamer oder sogar mehr), wenn Zeitbereiche nicht mit eingefügten Daten übereinstimmen. Im Folgenden sind einige meiner Fragen:
1) Ist das erwartete Verhalten?
2) Ich weiß, dass eine der Lösungen die Neuformatierung der Abfrage sein kann, um den tatsächlichen räumlichen und zeitlichen Datenbereichen zuzuordnen, die in Geomesa eingefügt wurden, wofür ich zusätzliche Metadaten über die Daten aufbewahren muss. Aber ich denke, dass eine bessere Lösung bei Geomesa Layer entwickelt werden könnte?

Lassen Sie mich wissen, ob es irgendwelche Einstellungen gibt, die dieses Verhalten beeinflussen können. Ich habe das gleiche Verhalten auf mehreren anderen lokalen Maschinen und auf Cloud-VMS gesehen, indem ich Geomesa eingerichtet habe.

Antwort

2

Im Allgemeinen muss GeoMesa immer noch dort scannen, wo Daten sein könnten, auch wenn dort eigentlich keine Daten vorhanden sind. Das Öffnen eines Scans, auch wenn er keine Daten zurückgibt, kostet etwas Zeit. Bei temporären Abfragen neigt die Anzahl der Bereiche dazu, noch größer zu sein, daher die langsamere Leistung.

Ich glaube, dass Accumulo dies ein bisschen besser als HBase behandelt, da es ein Konzept von einem Batch-Scanner, der mehrere Bereiche akzeptiert, und es hat einige Kenntnisse der Daten Start/Ende. Für HBase muss GeoMesa mehrere Scans mit einem thread pool ausführen, also ist es nicht so effizient.

GeoMesa hat auch das Konzept der Datenstatistik, aber es wurde noch nicht für HBase implementiert und wird derzeit nicht in der Abfrageplanung verwendet.

Um das Problem zu beheben, können Sie versuchen, den Datenspeicherparameter "queryThreads" zu erhöhen, um bei Abfragen mehr Threads zu verwenden. Sie können "looseBoundingBox" auch aktivieren, wenn Sie es gerade deaktiviert haben. Bei temporären Abfragen kann die Erhöhung des Bereichs temporal binning period dazu führen, dass weniger Bereiche gescannt werden. Dies kann jedoch zu langsameren Abfragen für sehr kleine Zeitbereiche führen und sollte daher auf Ihren Anwendungsfall zugeschnitten sein.

Als letzte Anmerkung, stellen Sie sicher, dass Sie die verteilten Coprozessoren installiert haben und enabled, vor allem, wenn Sie nicht lose Bounding-Boxen verwenden.

+0

Danke für die Antwort. Ich werde die Vorschläge versuchen. –