Hive实战—通过指定经纬度点找出周围的POI列表
《Hive实战—通过指定经纬度点找出周围的POI列表》要点: 编程之家PHP培训学院每天发布《Hive实战—通过指定经纬度点找出周围的POI列表》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 Apache Hive Logo Hive实战-通过指定经纬度点找出周围的POI列表 需求描述:
输入:
输出结果:
数据描述: aoipoi表
mst_dict表:
思路:
Hive SQL: # 添加临时函数:指定点经纬度1km内的数据(下面的UDF在以后讲UDF/UDAF/UDTF时一并贴出)
# 查询:店铺ID、POI名称、一级分类名称、二级分类名称、经度、纬度 with q1 as ( select name,lat from zyl.aoipoi a where a.type='poi' ) insert overwrite directory '/user/zyl/tmp_cpy_tab/20171017/lnglat' select /*+mapjoin(b)*/concat_ws("t",a.id,poiname,one_cate,coalesce(name,''),lat) line from ( select /*+mapjoin(b)*/a.id,'') one_cate,two_cate,lat from ( select name poiname,coalesce(split(category_id2,'|')[0],'|')[1],'') two_cate,lat,id from ( select name,'1' id from q1 where dis_lnglat(lng,116.123324,39.343313)<=1000 union all select name,'2' id from q1 where dis_lnglat(lng,116.34232423,40.3423423)<=1000 union all select name,'3' id from q1 where dis_lnglat(lng,116.4231,40.2343)<=1000 union all select name,'4' id from q1 where dis_lnglat(lng,116.2342,39.3433)<=1000 ) a LATERAL VIEW explode(split(category_id,',')) myTable1 AS category_id2 ) a left join zyl.mst_dict b on (a.one_cate = b.id) ) a left join zyl.mst_dict b on (a.two_cate = b.id) group by a.id,name,lat Hive SQL 脱敏后截图 结果前10条脱敏后示例 讲解 函数:
非空查找函数: COALESCE
分割字符串函数: SPLIT
行拆列函数:EXPLODE
下面语法/功能在以后再讲: with q1 as table union all insert overwrite directory LATERAL VIEW ... myTable AS ... alias mapjoin left join 转义(|、,) 注册函数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |