hadoop - 如何按点和相应的多边形连接 2 个配置单元表?

标签 hadoop hive gis hiveql

我有 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/

相关文章:

javascript - OpenLayers LonLat 转换不在正确的投影范围内

apache - 我在 hadooplibs 文件夹中找不到 Apache Oozie Hadoop Libs tar.gz 文件

hadoop - MapReduce Job 中的排序是在哪里完成的?

hadoop - 如何在具有子文件夹和多个csv文件的HDFS文件夹上创建表

java - Hive UDF 将 array<string> 作为参数传递

hive - 在pyspark中查询HIVE表

javascript - 如何将小数四舍五入到最接近的分数?

hadoop - 在没有本地文件系统帮助的情况下,如何将HDFS中的多个文件附加到HDFS中的单个文件?

java - Hadoop MultipleOutputs抛出 “cannot find symbol”

iOS Swift3 - 转换坐标