gpt4 book ai didi

azure - Hive:两点之间的距离

转载 作者:可可西里 更新时间:2023-11-01 15:29:58 25 4
gpt4 key购买 nike

我需要编写 Hive 查询,该查询将从包含经纬度列的表中提取数据,并返回给定点 x 英里范围内的结果。 hive 是否需要工具包或插件?

我正在使用在 HDInsight 上运行的 Hadoop (3.2.7.844)

最佳答案

抱歉,如果我正确理解您的用例,您也可以在查询中编写一个大的数学函数。在查询中编写数学函数会很麻烦,但从 Hive 查询的角度来看,它应该是可行的。

dlon = lon2 - lon1 
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * atan2( sqrt(a), sqrt(1-a) )
d = R * c (where R is the radius of the Earth).

并且 in where 条件根据您的 x 英里进行过滤。采用以下路径显然会更易于管理和清洁。

是的,您需要的不仅仅是 Hive 提供的开箱即用的功能。

基本上有两条路可供选择。

  1. 编写您自己的 UDF(非常简单)。这可能是一个标量 UDF,它将 x 英里和您所讨论的点作为参数,并返回表中的行(纬度、经度),其中 x 英里为您的参数点。在 UDF 中,您可以实现一个函数来计算参数点与提供给 UDF 的表行之间的距离。如果距离小于 x 英里,则返回。
  2. 或者您可以使用其他人已经编写的此类 UDF/UDTF。 Hive 的开源让其受益匪浅。您可以使用此库 ESRI 库来完成您的工作 https://github.com/Esri/gis-tools-for-hadoop 。还有很多其他此类库可用。

关于azure - Hive:两点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35805844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com