hive 计算经纬度之间的直线距离

#每天一点点,记录工作中实际可行操作#

计算经纬度之间的直线距离

经纬度字段 原始字段格式: POINT(116.094532 39.579501)

6378137*2*ASIN(SQRT(POWER(SIN((ta.start_point_lat-ta.close_point_lat)*ACOS(-1)/360),2) +COS(ta.start_point_lat*ACOS(-1)/180)*COS(ta.close_point_lat*ACOS(-1)/180)
*POWER(SIN((ta.start_point_lng-ta.close_point_lng)*ACOS(-1)/360),2))) as  z_distance

点击查看如何解析经纬度,直接可用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive 是一个数据仓库基础工具,主要用于处理大数据集,它是建立在 Hadoop 之上的,能够运行 MapReduce 和 Tez,也可以与 Spark 配合使用。Hive 的数据模型是类似于关系型数据库的表结构,它使用表来存储数据,而经纬度作为地理位置信息,可以在 Hive 表中以不同方式存储。 在 Hive 中存储经纬度通常有以下几种方式: 1. **直接存储为数值型(Double, Float)**: 最简单的方式是将经度和纬度作为浮点数(Float)或双精度浮点数(Double)存储在表的两列中。这种方法简单直接,适用于不需要复杂地理位置计算的场景。 ```sql CREATE TABLE location ( id INT, longitude DOUBLE, latitude DOUBLE ); ``` 2. **使用字符串类型存储经纬度**: 有时候出于兼容性或特定格式要求,经纬度可能会被存储为字符串类型(STRING)。这种方式便于展示和交换数据,但在进行地理位置计算时可能需要转换为数值类型。 3. **以经纬度对象形式存储**: 如果 Hive 版本支持复杂类型(如 STRUCT),则可以创建一个包含经度和纬度的对象,这样可以将经纬度作为一个整体来操作。 ```sql CREATE TABLE location ( id INT, coordinate STRUCT<longitude: DOUBLE, latitude: DOUBLE> ); ``` 4. **结合 GIS 工具存储**: 如果需要对地理位置进行复杂查询和分析,可以结合使用 Hive 和 GIS(地理信息系统)工具。在这种情况下,经纬度数据可能会被转换为 GIS 工具支持的格式,并在 Hive 中进行索引以便高效查询。 无论采用哪种方式存储经纬度数据,重要的是要确保数据格式的一致性和查询时的便捷性。在设计表结构时,需要考虑到查询需求和处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值