【问题标题】:Execute Mongo geospatial queries through Apache Drill通过 Apache Drill 执行 Mongo 地理空间查询
【发布时间】:2017-10-31 23:21:55
【问题描述】:

我们有一个关于通过 Mongo 存储插件集成 MongoDB 和 Drill 的问题;我们需要使用 MongoDB 地理空间功能通过 Drill 来查询和执行地理空间查询。这意味着我们在 Mongo 中有数据,并且使用 Drill 我们需要调用这些 Mongo 函数。 例如,假设我们在 Mongo 中有一个 zone 集合,其中包含 geojson 在内的 zone 信息。直接在 Mongo 中,我们可以使用 $geoIntersects Mongo 函数执行以下查询(查找与特定点相交的区域)并获得成功:

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

主要问题:

是否可以在 Drill 中使用 Mongo 地理空间查询运算符,我们该如何做?

另外,如果我们想执行上述相同的查询但使用 Drill,这可能吗?如果是,我们该怎么做?

感谢您的帮助!

【问题讨论】:

    标签: mongodb apache-drill


    【解决方案1】:

    Apache Drill 的 Mongo 存储插件充当 Mongo 客户端的外观,该外观不支持底层 Mongo 客户端的所有功能。不支持$geoIntersects$geometry 运算符,或者换句话说; Apache Drill 的 Mongo 存储插件不知道这些操作符。

    original documentation for Apache Drill's Mongo storage plugin 声明:

    到目前为止,为以下过滤器实现了谓词下推:>、>=、

    看看latest version of the code还是这样。

    那么,这个问题的答案……

    是否可以在 Drill 中使用 Mongo 地理空间查询运算符?

    ... 是:。 Apache Drill 的 Mongo 存储插件仅支持以下查询运算符:>, >=, <, <=, ==, !=, isNull and isNotNull

    还有这个问题的答案……

    另外,如果我们想执行上述相同的查询,但使用 Drill,这可能吗?

    ... 是。请记住,Apache Drill 的 Mongo 存储插件正试图通过文档存储和地理空间查询运算符(如 $geoIntersects$geometry)提供 SQL 式查询功能,在 SQL 中没有常见的、易于理解的等价物。

    很遗憾,上述回复对您来说没有好消息:(我认为您的选择是

    • 您自己实现这些。 this issue 附加了一个补丁,它可能会为如何在 Apache Drill 的 Mongo 存储插件中实现新的查询运算符提供一些指导
    • 针对Drill project 指定Component=Storage - MongoDB 提出问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 2018-12-17
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      相关资源
      最近更新 更多