2017-08-10 11 views
0

私は2つのハイブテーブルを持っています。表1は、2列と第二の表の経度と緯度が怒鳴るようWKT形式のポリゴン情報を持っています:ポイントと対応するポリゴンで2つのハイブテーブルを結合するには?

POLYGON ((6.93614 79.842882, 6.950198 79.856958, 6.943638 79.877815, 6.931795 79.877129, 6.92566 79.861507, 6.919184 79.861507, 6.917906 79.847603, 6.93614 79.842882)) 

私はpolygons.I'mを使用しようとしているに属し表1にどの点を知りたいですこれを行うには、hadoop用のST_Geometricライブラリー(https://github.com/Esri/spatial-framework-for-hadoop/wiki/UDF-Documentation)が必要です。 2つのテーブルのデータは私がそれらに加わる必要があるので。私は2つのテーブルを結合するために

ST_Contains(polygon, point) 

機能を使用するようにしてください。しかし、私はそれをすることができませんでした。誰かがこれを行う方法を知っていますか?

答えて

2

ST_Containsは、1つのポリゴンと1つのポイントで実行され、フルテーブルでは実行されません。あなたは完全なデカルト積を行う必要があり

が参加(インナーは無条件で参加)、その後、where句でST_Containsを適用します。

select * from polygonTable a,pointsTable b where ST_Contains(a.polygon,b.point); 

注デカルト積を行うことは非効率的であるとかかる場合があること大きなテーブルの上に多くの時間。

+0

テーブルが大きく、デカルト積を避ける必要がある場合は、Hiveクエリ(https://github.com/Esri/gis)ではなく、クォードツリーインデックスを使用したカスタムmap-reduceクエリを記述することができます-tools-for-hadoop/tree/master/samples/point-in-polygon-aggregation-mr –

+0

はい問題はデカルト積です。私はCROSS JOINを使用します。カスタムmap-reduceクエリに関する初心者に優しいドキュメントを知っていますか? – GihanDB

関連する問題