我有两张Hive桌。表1有两列经纬度,第二列有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\u几何库(https://github.com/esri/spatial-framework-for-hadoop/wiki/udf-documentation)做这个。由于数据在两个表中,我必须连接它们。我试着用
ST_Contains(polygon, point)
函数连接两个表。但我做不到。有人知道怎么做吗?
1条答案
按热度按时间0dxa2lsx1#
ST_Contains
在单个多边形和单个点上运行,而不是在完整表格上运行。你需要做一个完全的笛卡尔积连接(没有条件的内部连接),然后应用
ST_Contains
在where子句中:请注意,做笛卡尔积是低效的,可能需要大量的时间在大表上。