如何通过Spark查询MongoDB以进行地理空间查询

时间:2016-01-29 20:42:45

标签: mongodb apache-spark

有没有办法将MongoDB与Spark一起用于地理空间查询?我看不出如何用Stratio做到这一点。

2 个答案:

答案 0 :(得分:1)

有很多方法可以从spark查询地理空间数据。使用magellan https://github.com/harsha2010/magellan或hive esri地理空间工具包。 https://github.com/Esri/spatial-framework-for-hadoop 我从未尝试过stratio的mongo librairie,但是使用spark数据源api或mongo连接器,我认为你可以使用mongo语法运行地理查询,然后将它们转换为RDD或Dataframe。

答案 1 :(得分:0)

您可以使用此library从Spark SQL查询MongoDB。 MongoDB允许应用程序对地理空间数据执行以下类型的查询:包含,交集,邻近。

显然,除了地理空间的运营商之外,您还可以使用所有其他运营商。现在让我们看一些具体的例子。

这是一个例子: 查找加利福尼亚州的所有机场。为此,您需要获取California位置(Polygon)并在查询中使用命令$ geoWithin。从shell看起来像:

use geo
var cal = db.states.findOne(  {code : "CA"}  );

db.airports.find( 
  { 
    loc : { $geoWithin : { $geometry : cal.loc } } 
  },
  { name : 1 , type : 1, code : 1, _id: 0 } 
);

结果:

{“name”:“Modesto City - County”,“type”:“”,“code”:“MOD”} ... {“name”:“旧金山国际机场”,“类型”:“国际”,“代码”:“SFO”} {“name”:“San Jose International”,“type”:“International”,“code”:“SJC”}

如果您想尝试其他示例,请查看此博文here