GeoHash企业级大数据 用户画像实战应用项目GeoHash大数据项目实战
作为一个资深技术死宅,我已经是懒癌晚期了,一日三餐基本都懒得做,以前家里堆了各家餐馆的外卖单子,自从有了外卖app,省力省心呀。最爱用的是饿了么,主要是补贴多,但是用着用着我职业病突然犯了。饿了么给用户推送的餐馆信息是按距离排序的,离用户越近的,在餐馆列表中越靠前。这是怎么做到的呢?
App后台获取自己的地图位置P,计算所在位置P与北京所有餐馆的距离,然后返回距离=1000米的餐馆。但是北京的餐馆何其多啊,这样计算不得了,于是想了,既然知道经纬度了,那应该知道自己在朝阳区,那应该计算所在位置P与朝阳区所有餐馆的距离啊,但是朝阳区也很多餐馆啊,应该计算所在位置P与所在街道所有餐馆的距离,这样计算量又小了,效率也提升了。就是通过过滤的方法来减小参与计算的餐馆数目,从某种角度上讲,这里使用索引技术。
一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。
思想:如果能通过某种方法将二维的点数据转换成一维的数据,那样不就可以继续使用B树索引了嘛。那这种方法真的存在嘛,答案是肯定的。目前很火的GeoHash算法就是运用了上述思想,GeoHash将二维的经纬度转换成字符串,每一个字符串代表了某一地图区域,通过对比字符串来计算距离。不仅外卖app,地图app,大众点评等生活商圈app,都是这样来给用户推荐附近商家的。
关于GeoHash的学习,我这里有一套葵花宝典,赠送给大家
--------------------------
GeoHash算法能完美的解决地图定位功能中关于按距离排序的需求,比如App中摇一摇附近的人,推荐附近商户等功能是怎么实现的?在用户图像中,如何有效地获取用户的商圈,生活圈等商业兴趣?
1)GeoHash用一个字符串表示经度和纬度两个坐标,比如我现在所在位置的GeoHash值为 wx4sv61q;
2)GeoHash标识的并不是一个点,而是一个区域,比如 wx4sv61q 对应的就是一个矩形区域;
3)编码的前缀可以标识更大的区域,比如 wx4sv61 编码代表的区域要大于 wx4sv61q 代表的区域,但是 wx4sv61q 代表的区域一定在 wx4sv61 代表的区域内。
因此我们再去做距离检索的时候,只需要对GeoHash进行前缀匹配即可,具体的实现请看视频
视频重点:
GeoHash算法应用的具体场景,GeoHash算法的实现原理与常见的问题,Base32编码的用法,百度地图GeocodingAPI的应用与实战,GeoHash算法在用户画像上的实战应用
===============课程目录===============
1.0.实战案例简述.wmv1.1.业务背景说明.wmv2.1.感性认识GeoHash算法.wmv2.2.GeoHash算法实现.wmv2.3.Base32编码长度与精度.wmv2.4.GeoHash算法原理.wmv2.5.GeoHash算法的边界问题.wmv3.1-2.GeocodingAPI及使用说明.wmv3.3.GeocodingAPI代码实战.wmv4.1.GeoHash实战业务流程.wmv4.2.1.创建应用库数据表.wmv4.2.2.查询并导入数据到Hbase表中.wmv4.2.3.查询hbase表,调用百度地图API进行标签识别.wmv4.2.4.打标签主体代码说明.wmv4.2.5.打标签代码详解1.wmv4.2.6.打标签代码详解2.wmv4.3.1.创建表导入数据.wmv4.3.2.调用GeocodingAPI进行数据查询.wmv4.3.3.打标签任务集群运行.wmv4.3.3.打标签流程讲解.avi5.总结.wmv
小牛学堂,十年沉淀,国内首家上市大数据教育机构 只为品质教育1》前沿课程:独创混元立体式教学,课程贴合企业需求2》就业保障:签就业协议,薪资低于8k即免除全部学费3》人性化学费:0学费入学,就业后再分期付学费更多视频详见腾讯视频-小牛学堂