2017-10-30 1 views
0

Wir haben eine Frage bezüglich der Integration von MongoDB und Drill über das Mongo Storage-Plugin. Wir müssen Geodatenabfragen mithilfe von Drill mithilfe der Geospatial-Funktionen von MongoDB abfragen und ausführen. Das bedeutet, wir haben Daten in Mongo und mit Drill müssen wir diese Mongo-Funktionen aufrufen. Betrachten wir zum Beispiel eine Zonensammlung in Mongo mit Zoneninformationen einschließlich eines Geojons. Direkt in Mongo können wir die folgende Abfrage mit der $geoIntersects Mongo Funktion (Finden Sie die Zonen, die einen bestimmten Punkt schneidet) ausführen mit erfolgreichen Ergebnissen:Ausführen von Mongo Geospatial-Abfragen über Apache Drill

db.getCollection('zones').find({ geom: { $geoIntersects: { $geometry: { type: "Point", coordinates: [ -73.93414657, 40.82302903 ] } } } }) 

Die wichtigste Frage:

Ist es möglich, Mongo geospatial zu verwenden Abfrageoperatoren in Drill und wie können wir das tun?

Auch wenn wir die gleiche Abfrage wie oben beschrieben, aber mit Drill ausführen möchten, ist das möglich? Und wenn es ist, wie können wir es tun?

Danke für Ihre Hilfe!

Antwort

1

Apache Drills Mongo-Speicher-Plugin fungiert als Fassade über einem Mongo-Client, diese Fassade unterstützt nicht alle Funktionen des zugrunde liegenden Mongo-Clients. Die Operatoren $geoIntersects und $geometry werden nicht unterstützt oder anders ausgedrückt; Apache Drills Mongo Storage-Plugin kennt diese Operatoren nicht.

The original documentation for Apache Drill's Mongo storage plugin erklärte:

Ab sofort Prädikat Pushdown- für folgende Filter implementiert:>,> =, <, < =, ==, = isNull und isNotNull!.

Mit Blick auf die latest version of the code bleibt dies der Fall.

Also, die Antwort auf diese Frage ...

Ist es möglich, Mongo geospatial Abfrageoperatoren in Drill zu benutzen?

... ist: nein. Das Mongo Storage-Plugin von Apache Drill unterstützt nur die folgenden Abfrageoperatoren: >, >=, <, <=, ==, !=, isNull and isNotNull.

Und die Antwort auf diese Frage ...

Auch, wenn wir die gleiche Abfrage oben beschrieben, aber unter Verwendung von Drill ausführen wollen, ist, das möglich?

... ist nein. Denken Sie daran, dass das Mongo-Speicher-Plug-In von Apache Drill versucht, SQL-ähnliche Abfragefunktionen über einen Dokumentenspeicher bereitzustellen, und Geospatial-Abfrageoperatoren wie $geoIntersects und $geometry haben keine gemeinsamen, gut verstandenen Entsprechungen in SQL.

Leider gibt es keine gute Nachricht für Sie in der obigen Antwort :(Ich denke, Ihre Optionen

  • diese selbst implementieren sind.Es gibt einen Patch this issue angebracht, die zum Teil mit Anleitung, wie zur Verfügung stellen könnten einen neuen Abfrage-Operator in Apache Drill Mongo Speicher Plugin
  • Heben Sie ein Problem gegen die Drill project Angabe Component=Storage - MongoDB
+0

Danke für die Antwort @glitch implementieren! Es ist jetzt klarer. –