Выполнение геопространственных запросов Mongo через Apache Drill

У нас есть вопрос относительно интеграции MongoDB и Drill через подключаемый модуль хранилища Mongo; нам нужно запрашивать и выполнять геопространственные запросы через Drill с использованием геопространственных функций MongoDB. Это означает, что у нас есть данные в Mongo, и с помощью Drill нам нужно вызвать эти функции Mongo. Например, предположим, что у нас есть коллекция зон в Mongo с информацией о зонах, включая geojson. Непосредственно в Mongo мы можем выполнить следующий запрос, используя функцию $geoIntersects Mongo (найти зоны, которые пересекают определенную точку) с успешными результатами:

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

Главный вопрос:

Можно ли использовать операторы геопространственных запросов Mongo в Drill и как мы можем это сделать?

Кроме того, если мы хотим выполнить тот же запрос, описанный выше, но используя Drill, возможно ли это? И если это так, как мы можем это сделать?

Спасибо за вашу помощь!


person Jose Luis Sparano    schedule 30.10.2017    source источник


Ответы (1)


Подключаемый модуль хранилища Apache Drill Mongo действует как фасад над клиентом Mongo, этот фасад не поддерживает все функции базового клиента Mongo. Операторы $geoIntersects и $geometry не поддерживаются или другими словами; Плагин хранилища Apache Drill Mongo не знает об этих операторах.

исходная документация для подключаемого модуля хранилища Apache Drill Mongo заявил:

На данный момент проталкивание предиката реализовано для следующих фильтров: >, >=, ‹, ‹=, ==, !=, isNull и isNotNull.

Глядя на файл последняя версия кода это остается в силе.

Итак, ответ на этот вопрос...

Можно ли использовать операторы геопространственных запросов Mongo в Drill?

... это: нет. Подключаемый модуль хранилища Apache Drill Mongo поддерживает только следующие операторы запросов: >, >=, <, <=, ==, !=, isNull and isNotNull.

И ответ на этот вопрос...

Кроме того, если мы хотим выполнить тот же запрос, описанный выше, но используя Drill, возможно ли это?

... нет. Имейте в виду, что подключаемый модуль хранилища Apache Drill Mongo пытается предоставить функции запросов SQL в хранилище документов, а операторы геопространственных запросов, такие как $geoIntersects и $geometry, не имеют общепринятых, понятных эквивалентов в SQL.

К сожалению, в приведенном выше ответе нет для вас хороших новостей :( Я думаю, ваши варианты

  • Реализуйте их сами. К этой проблеме прикреплено исправление, которое может дать некоторые рекомендации о том, как внедрить новый оператор запроса в подключаемый модуль хранилища Apache Drill Mongo
  • Поднимите вопрос в отношении Drill проекта, указав Component=Storage - MongoDB
person glytching    schedule 31.10.2017