我有 2 个 Hive 表。表 1 在 2 列中有经度和纬度,第二个表有 WKT 格式的多边形信息,如下所示:
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))
我想找出表 1 中的哪些点属于哪些多边形。我正在尝试使用 Hadoop 的 ST_Geometric 库 (https://github.com/Esri/spatial-framework-for-hadoop/wiki/UDF-Documentation) 来执行此操作。由于 2 个表中的数据我必须加入它们。我尝试使用
ST_Contains(polygon, point)
连接 2 个表的函数。但我做不到。有人知道这样做的方法吗?
最佳答案
ST_Contains
在单个多边形和单个点上运行,而不是完整的表格。
您需要进行完整的笛卡尔积连接(无条件的内部连接),然后在 where 子句中应用 ST_Contains
:
select * from polygonTable a,pointsTable b where ST_Contains(a.polygon,b.point);
请注意,做笛卡尔积是低效的,并且可能会在大表上花费大量时间。
关于hadoop - 如何按点和相应的多边形连接 2 个配置单元表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45613179/