左半连接加入Spark-SQL&中的Geo-Spatial表。 GeoMesa

时间:2017-03-23 10:28:45

标签: apache-spark-sql geospatial geomesa

问题:

我有2个包含地理空间点的表(d1和d2)。我想执行以下查询:

select * from table 1 where table1.point is within 50km of any point in table2.point

我正在Spark-SQL使用GeoMesa& Accumulo实现同样的目标。 (Spark为处理引擎,Accumulo为Data Store,GeoMesa为GeoSpatial库)。

以上查询有点 left semi join ,但我不确定如何使用Spark-SQL来实现它,因为据我所知,子查询无法实现用于where子句。

1 个答案:

答案 0 :(得分:0)

能够通过以下方式实现这一目标:

select * from d1 left semi join d2 on st_contains(st_bufferPoint(d1.point, 10000.0), d2.point)

Spark广播d2&正在进行加入,但由于d1的大小为50亿而且仍然需要更多的时间。 d2是1000万。

不确定是否有更有效的方法来实现同样的目标。