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.實戰案例簡述.wmv
1.1.業務背景說明.wmv
2.1.感性認識GeoHash算法.wmv
2.2.GeoHash算法實現.wmv
2.3.Base32編碼長度與精度.wmv
2.4.GeoHash算法原理.wmv
2.5.GeoHash算法的邊界問題.wmv
3.1-2.GeocodingAPI及使用說明.wmv
3.3.GeocodingAPI代碼實戰.wmv
4.1.GeoHash實戰業務流程.wmv
4.2.1.創建應用庫數據表.wmv
4.2.2.查詢并導入數據到Hbase表中.wmv
4.2.3.查詢hbase表,調用百度地圖API進行標簽識別.wmv
4.2.4.打標簽主體代碼說明.wmv
4.2.5.打標簽代碼詳解1.wmv
4.2.6.打標簽代碼詳解2.wmv
4.3.1.創建表&導入數據.wmv
4.3.2.調用GeocodingAPI進行數據查詢.wmv
4.3.3.打標簽任務集群運行.wmv
4.3.3.打標簽流程講解.avi
5.總結.wmv