我需要編寫hive查詢,該查詢將從包含經緯度列的表格中拉出,並返回距給定點x英里內的結果。蜂巢是否需要一個工具包或插件?Hive:兩點之間的距離
我使用Hadoop(3.2.7.844)上HDInsight
我需要編寫hive查詢,該查詢將從包含經緯度列的表格中拉出,並返回距給定點x英里內的結果。蜂巢是否需要一個工具包或插件?Hive:兩點之間的距離
我使用Hadoop(3.2.7.844)上HDInsight
對不起運行,你也可以只寫在查詢一個很大的數學函數,如果我理解正確使用的情況下。 在查詢中編寫數學函數將是一件令人頭疼的事情,但從配置單元查詢的角度來看,它應該是可行的。
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).
哪裏條件篩選器可以根據你的X英里內找到。 以下路徑顯然更易於管理和清潔。
是的,您需要的不僅僅是Hive開箱即用的功能。
基本上有兩條路可以走。
謝謝。看起來我需要學習如何爲這兩條路徑中的任何一條更新HDInsight。我想我找到一個,但尚未確定如何將其提供給我的蜂巢查詢: https://issues.apache.org/jira/secure/attachment/12619610/hive-6006.patch – Roger
Apache Hivemall支持給出了兩個地理地點之間Haversine distance計算。在GIS.SE
-- Tokyo (lat: 35.6833, lon: 139.7667)
-- Osaka (lat: 34.6603, lon: 135.5232)
select
haversine_distance(35.6833, 139.7667, 34.6603, 135.5232) as km,
haversine_distance(35.6833, 139.7667, 34.6603, 135.5232, true) as mile;
類似的問題 - http://gis.stackexchange.com/questions/185494/proximity-query-in-hive-using-esri-geospatial-library –