hiveql空间连接与相交的高效hive方法

ac1kyiln  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(443)

我有一个名为“favoriteshop”(shopname,wkt)的配置单元表,其中包含10个位置及其wkt(众所周知的文本)。我还有一个名为“city”(cityname,wkt)的表,其中包含所有城市和城市的完整wkt。我想对这两个表进行空间连接,看看它们是否在空间上相交。以下是我的疑问:

SELECT a.shopname, a.wkt, b.cityname
FROM favoriteshop a, city b
WHERE ST_Intersects(ST_GeomFromText(a.wkt), ST_GeomFromText(b.wkt)) = true

有没有更有效的方法?这感觉就像是一个完整的城市表扫描是有问题的,因为城市可以是巨大的(让我们假设它可以超过数百万或数十亿的记录)。谢谢你的建议!

neskvpey

neskvpey1#

计算子查询中的st\ geomfromtext并将条件移到on子句:

SELECT a.shopname, a.wkt, b.cityname
  FROM ( select a.shopname, a.wkt, ST_GeomFromText(a.wkt) Geom from favoriteshop a ) a
     INNER JOIN 
       (selectb.cityname, ST_GeomFromText(b.wkt) Geom from  city b ) b
               on ST_Intersects(a.Geom, b.Geom) = true;

相关问题