王洪嶺,肖 麗
(廣州泰爾智信科技有限公司,廣東 廣州 510000)
檢測人口的流動過程中,存在行為多變性,政策的人才引進、企業的變遷、某些大型活動的舉辦或者某些短暫的節假日等,均可導致人口的流動。統計人口流動的方式也是多樣的,如根據人員來往的機票火車票等交通數據、根據政府單位登記的人員統計等,但以上測算方法都存在延遲性,無法實時更新。
在2019年6月中國互聯網絡信息中心發布的《第44次中國互聯網絡發展狀況統計報告》中寫到,中國網民規模達到8.54億人,互聯網普及率達到61.2%,其中手機網民有8.47億人,龐大的網民數量為運營商提供大數據集,包括購物、定位、興趣愛好等行為數據。
在人口流動和分布中,需要根據運營商提供的用戶信息去匹配其所屬的區域。由于某市各鎮的區域范圍屬于不規則圖形的閉環,所以需要判斷用戶所在位置是否在某個不規則圖形中或者邊上。如圖1所示,判斷點在區域內,則需要區域邊界點并且是形成閉環,點的數量越多,則判斷越準確,且數據中經緯度坐標需要使用統一標準。本平臺采用BD09坐標系,屬于百度坐標偏移標準。
在不規則區域中判斷點是否在區域內,可以采用PNPoly算法、多邊形面積算法等方法。本文采用射線法來判斷,通過點假設性兩端無限延長,形成兩端射線去與不規則區域邊界查看是否有交點,如果交點個數為偶數,則點在區域外,奇數則在區域內。因為射線法需要滿足多種條件,去排除因為獨特區域造成的與點有奇數交點而又不在區域內的情況,所以此方法適用于各種不規則圖形,算法代碼如表1所示,是實現判斷射線測算點是否在區域內的具體算法。

圖1 在不規則區域中定位

表1 射線測算算法代碼實現
隨著數據量不斷增加,大數據分析平臺在多項領域中被應用,而大數據主要指傳統數據處理軟件無法處理的數據集,有著海量、多樣等特點,主要分為結構化、半結構化和非結構化,目前非結構化數據占70%~80%,通過數據挖掘技術和算法去提高處理非結構化數據[1]。非結構化數據對比結構化數據的處理難度要大,數據的預處理能夠有效替身數據挖掘的質量和效果,大大提高了數據挖掘的效率[2]。
調查通信數據發現,某市每月用戶文本信息可達TB級別,基于多個Hadoop大數據平臺分析系統的對比,支撐平臺分布式存儲均使用HDFS,而且HDFS也可作為其他云存儲的存儲系統[3]。作為核心系統需要保持穩定性,在HDFS中用于元數據信息管理的NameNode存在不穩定性,當NameNode發生故障的時候,可能導致系統宕機。通過在內存中保存NameNode鏡像,并且進行實時備份和之后在高可用NameNode去進行Checkpoint[4],可進一步提高平臺在海量數據處理下的穩定性。
基于移動通信數據,可以運算得出有價值的報告,本研究就是通過運營商提供的通信信息,利用數據分析模塊對電信數據進行數據清洗與處理,建立用戶數據畫像,根據政務需求,形成服務清單,并進行清洗、過濾、篩選、聚合等操作,將數據轉換為個人人口遷移、人口分布、人口的遷入遷出等數據可視化。
人口大數據可視化平臺可為政府在交通、物流、城市應急事件等領域作為數據分析參考,在確認目標需求之前分析領域需要數據的要求,獲得足夠的分析源數據。獲取最終數據之前需要建設平臺分析方案,進行平臺的環境搭建、輔助數據收集、清洗數據和數據的預處理、數據的完全處理和存儲等步驟的流程式處理。電信大數據的人口分析平臺建設方法如圖2所示。

圖2 電信大數據的人口分析平臺建設方法
在設計過程中應遵循設計原則的穩定性、先進性和可維護性。對于穩定性,平臺可采用實時和離線處理,對于個人移動軌跡查詢,需要快速從大量數據中獲取結果,則使用實時處理,而對時間間隔要求較短的人口分布和密度等需求,可通過定時離線分析數據,保證平臺的穩定性。先進性與可維護性可采用前沿技術且應用型較為廣泛的技術去實現平臺架構的搭建,如Flink,Logstash,Elasticsearch等較多開發者維護的技術。
數據源來自電信運營商在2014年6—10月,是廣東省某市所有用戶的語音數據和流量數據,數據文件大小分別為2.92 GB和28.9 GB,流量數據共有506 198 944行,語音數據有70 740 696行,具體的數據形式如表2—3所示。

表2 語音數據

表3 流量數據
由于是直接從運營商中獲取出來的數據,數據清洗和處理難度可能會較低,但仍需做臟數據處理,保證結果更加精確。用戶語音數據包含的字段有用戶號(經過加密的脫敏處理)、時間戳、基站LAC和CI、通話時長;流量數據包含的字段有用戶號、時間戳、基站LAC和CI、上行流量、下行流量、上網時長。其中基站的LAC和CI對應的Long和Lat數據包含在電信運營商提供的某市內所有地區中基站的數據中,數據中基站對應的Long,Lat屬于WGS坐標。
通過使用Java中的HttpClient技術,使用某些網站提供的公開API,獲取某市各鎮的邊界經緯度坐標和某市小區區域邊界坐標,供369個小區數據。后期經過ETL工具對已采集數據進行清洗和糾正,將兩份數據在時間間隔較短中重復的用戶號去除,并將數據格式轉換成合適的格式和類型,方便ELASTICSEARCH進行數據檢索和存儲。
本文基于人口大數據平臺處理運營商提供源數據和采集系統獲取到的相關數據,對某市的各鎮做了人口密度統計、人口流動統計和個人位置移動記錄,此平臺總共可分為4個模塊,分別是采集模塊、數據存儲模塊、分析處理模塊、面板顯示模塊。本平臺采用7臺服務器進行搭建分布式的平臺環境,系統使用的版本號分別為:elasticsearch-6.7.0,hadoop-2.7.7,flink-1.8.0,kafka_2.11-2.2.0,springboot-2.1.7。
通過數據采集獲取源數據和輔助數據,本次使用測試數據大約在50 GB左右,考慮傳統數據庫后期處理TB數據時各項壓力較大,則采用HDFS存儲數據。存儲在HDFS中的源數據可通過Flume提供的接口導入在Flink中,在兩項流程中插入Kafka,可降低對服務器的IO操作,進行數據緩存。整個平臺數據挖掘則利用Flink批處理技術進行數據清洗,對人口密度、個人流動軌跡、區域流動做出不同處理方式和數據的處理。最后將數據導入Elasticsearch中檢索出數據可視化對應的數據。平臺整個具體操作流程如圖3所示,包括從數據采集到數據可視化的一整流程。

圖3 數據處理流程
為滿足不同需求而對數據進行不同的處理,Flink作為此平臺的數據清洗,導入Elasticsearch進行數據檢索,因此對后期數據檢索的效率有重大影響。人口密度功能的數據實時性相對于人口流動軌跡和區域人口流動來說較弱,所以采用流式處理,而另外兩個采用批示處理。Flink數據清理流程如圖4所示。

圖4 平臺鐘Flink數據清洗過程
文章主要構建一個以大數據技術分析通信數據的平臺,最終以可視化形式展示平臺分析內容。通過市級數據展開分析,從多角度和多功能進行數據挖掘,描述了人口大數據分析平臺的設計過程和原則,對Hadoop的相關研究和平臺相關架構展開描述,最終設計出某市的各鎮人口密度、各鎮人口流動、小區人口分布以及個人人口流動軌跡的4個功能,對4個功能提供了可視化面板。
在平臺開發過程中,通過不斷測試和修改,再將結果與報告進行對比后不斷完善平臺,希望最大限度地以精準、高效、人性化方式支撐各領域政府工作。