2017-03-23 4 views
1

問題:左半スパーク-SQL&GeoMesaに地理空間のテーブルに参加

私は、地理空間の点を含む(& D2 D1)2つのテーブルを持っています。私は、次のクエリを実行します:

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

私は同じことを達成するためにGeoMesa & AccumuloSpark-SQLを使用しています。 (処理エンジンとしてスパーク、AccumuloとしてGeoSpatialライブラリ用のデータストア& GeoMesa)。

上記のクエリは、left semi joinの一種であるが、私は私の知る限りサブクエリを読んでてきたように、where句で使用することはできませんのでSpark-SQLを使用してそれを達成するためにどのように確認していません。

答えて

1

は、この使用を達成することができました:D2 &を実施している放送

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

スパークが参加したが、D1のサイズは50億& d2が千万であるとして、それはまだ多くの時間を取っています。

これ以上の効率的な方法があるかどうかはわかりませんが、