王洪嶺,肖 麗
(廣州泰爾智信科技有限公司,廣東 廣州 510000)
檢測(cè)人口的流動(dòng)過程中,存在行為多變性,政策的人才引進(jìn)、企業(yè)的變遷、某些大型活動(dòng)的舉辦或者某些短暫的節(jié)假日等,均可導(dǎo)致人口的流動(dòng)。統(tǒng)計(jì)人口流動(dòng)的方式也是多樣的,如根據(jù)人員來(lái)往的機(jī)票火車票等交通數(shù)據(jù)、根據(jù)政府單位登記的人員統(tǒng)計(jì)等,但以上測(cè)算方法都存在延遲性,無(wú)法實(shí)時(shí)更新。
在2019年6月中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的《第44次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》中寫到,中國(guó)網(wǎng)民規(guī)模達(dá)到8.54億人,互聯(lián)網(wǎng)普及率達(dá)到61.2%,其中手機(jī)網(wǎng)民有8.47億人,龐大的網(wǎng)民數(shù)量為運(yùn)營(yíng)商提供大數(shù)據(jù)集,包括購(gòu)物、定位、興趣愛好等行為數(shù)據(jù)。
在人口流動(dòng)和分布中,需要根據(jù)運(yùn)營(yíng)商提供的用戶信息去匹配其所屬的區(qū)域。由于某市各鎮(zhèn)的區(qū)域范圍屬于不規(guī)則圖形的閉環(huán),所以需要判斷用戶所在位置是否在某個(gè)不規(guī)則圖形中或者邊上。如圖1所示,判斷點(diǎn)在區(qū)域內(nèi),則需要區(qū)域邊界點(diǎn)并且是形成閉環(huán),點(diǎn)的數(shù)量越多,則判斷越準(zhǔn)確,且數(shù)據(jù)中經(jīng)緯度坐標(biāo)需要使用統(tǒng)一標(biāo)準(zhǔn)。本平臺(tái)采用BD09坐標(biāo)系,屬于百度坐標(biāo)偏移標(biāo)準(zhǔn)。
在不規(guī)則區(qū)域中判斷點(diǎn)是否在區(qū)域內(nèi),可以采用PNPoly算法、多邊形面積算法等方法。本文采用射線法來(lái)判斷,通過點(diǎn)假設(shè)性兩端無(wú)限延長(zhǎng),形成兩端射線去與不規(guī)則區(qū)域邊界查看是否有交點(diǎn),如果交點(diǎn)個(gè)數(shù)為偶數(shù),則點(diǎn)在區(qū)域外,奇數(shù)則在區(qū)域內(nèi)。因?yàn)樯渚€法需要滿足多種條件,去排除因?yàn)楠?dú)特區(qū)域造成的與點(diǎn)有奇數(shù)交點(diǎn)而又不在區(qū)域內(nèi)的情況,所以此方法適用于各種不規(guī)則圖形,算法代碼如表1所示,是實(shí)現(xiàn)判斷射線測(cè)算點(diǎn)是否在區(qū)域內(nèi)的具體算法。
圖1 在不規(guī)則區(qū)域中定位
表1 射線測(cè)算算法代碼實(shí)現(xiàn)
隨著數(shù)據(jù)量不斷增加,大數(shù)據(jù)分析平臺(tái)在多項(xiàng)領(lǐng)域中被應(yīng)用,而大數(shù)據(jù)主要指?jìng)鹘y(tǒng)數(shù)據(jù)處理軟件無(wú)法處理的數(shù)據(jù)集,有著海量、多樣等特點(diǎn),主要分為結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化,目前非結(jié)構(gòu)化數(shù)據(jù)占70%~80%,通過數(shù)據(jù)挖掘技術(shù)和算法去提高處理非結(jié)構(gòu)化數(shù)據(jù)[1]。非結(jié)構(gòu)化數(shù)據(jù)對(duì)比結(jié)構(gòu)化數(shù)據(jù)的處理難度要大,數(shù)據(jù)的預(yù)處理能夠有效替身數(shù)據(jù)挖掘的質(zhì)量和效果,大大提高了數(shù)據(jù)挖掘的效率[2]。
調(diào)查通信數(shù)據(jù)發(fā)現(xiàn),某市每月用戶文本信息可達(dá)TB級(jí)別,基于多個(gè)Hadoop大數(shù)據(jù)平臺(tái)分析系統(tǒng)的對(duì)比,支撐平臺(tái)分布式存儲(chǔ)均使用HDFS,而且HDFS也可作為其他云存儲(chǔ)的存儲(chǔ)系統(tǒng)[3]。作為核心系統(tǒng)需要保持穩(wěn)定性,在HDFS中用于元數(shù)據(jù)信息管理的NameNode存在不穩(wěn)定性,當(dāng)NameNode發(fā)生故障的時(shí)候,可能導(dǎo)致系統(tǒng)宕機(jī)。通過在內(nèi)存中保存NameNode鏡像,并且進(jìn)行實(shí)時(shí)備份和之后在高可用NameNode去進(jìn)行Checkpoint[4],可進(jìn)一步提高平臺(tái)在海量數(shù)據(jù)處理下的穩(wěn)定性。
基于移動(dòng)通信數(shù)據(jù),可以運(yùn)算得出有價(jià)值的報(bào)告,本研究就是通過運(yùn)營(yíng)商提供的通信信息,利用數(shù)據(jù)分析模塊對(duì)電信數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與處理,建立用戶數(shù)據(jù)畫像,根據(jù)政務(wù)需求,形成服務(wù)清單,并進(jìn)行清洗、過濾、篩選、聚合等操作,將數(shù)據(jù)轉(zhuǎn)換為個(gè)人人口遷移、人口分布、人口的遷入遷出等數(shù)據(jù)可視化。
人口大數(shù)據(jù)可視化平臺(tái)可為政府在交通、物流、城市應(yīng)急事件等領(lǐng)域作為數(shù)據(jù)分析參考,在確認(rèn)目標(biāo)需求之前分析領(lǐng)域需要數(shù)據(jù)的要求,獲得足夠的分析源數(shù)據(jù)。獲取最終數(shù)據(jù)之前需要建設(shè)平臺(tái)分析方案,進(jìn)行平臺(tái)的環(huán)境搭建、輔助數(shù)據(jù)收集、清洗數(shù)據(jù)和數(shù)據(jù)的預(yù)處理、數(shù)據(jù)的完全處理和存儲(chǔ)等步驟的流程式處理。電信大數(shù)據(jù)的人口分析平臺(tái)建設(shè)方法如圖2所示。
圖2 電信大數(shù)據(jù)的人口分析平臺(tái)建設(shè)方法
在設(shè)計(jì)過程中應(yīng)遵循設(shè)計(jì)原則的穩(wěn)定性、先進(jìn)性和可維護(hù)性。對(duì)于穩(wěn)定性,平臺(tái)可采用實(shí)時(shí)和離線處理,對(duì)于個(gè)人移動(dòng)軌跡查詢,需要快速?gòu)拇罅繑?shù)據(jù)中獲取結(jié)果,則使用實(shí)時(shí)處理,而對(duì)時(shí)間間隔要求較短的人口分布和密度等需求,可通過定時(shí)離線分析數(shù)據(jù),保證平臺(tái)的穩(wěn)定性。先進(jìn)性與可維護(hù)性可采用前沿技術(shù)且應(yīng)用型較為廣泛的技術(shù)去實(shí)現(xiàn)平臺(tái)架構(gòu)的搭建,如Flink,Logstash,Elasticsearch等較多開發(fā)者維護(hù)的技術(shù)。
數(shù)據(jù)源來(lái)自電信運(yùn)營(yíng)商在2014年6—10月,是廣東省某市所有用戶的語(yǔ)音數(shù)據(jù)和流量數(shù)據(jù),數(shù)據(jù)文件大小分別為2.92 GB和28.9 GB,流量數(shù)據(jù)共有506 198 944行,語(yǔ)音數(shù)據(jù)有70 740 696行,具體的數(shù)據(jù)形式如表2—3所示。
表2 語(yǔ)音數(shù)據(jù)
表3 流量數(shù)據(jù)
由于是直接從運(yùn)營(yíng)商中獲取出來(lái)的數(shù)據(jù),數(shù)據(jù)清洗和處理難度可能會(huì)較低,但仍需做臟數(shù)據(jù)處理,保證結(jié)果更加精確。用戶語(yǔ)音數(shù)據(jù)包含的字段有用戶號(hào)(經(jīng)過加密的脫敏處理)、時(shí)間戳、基站LAC和CI、通話時(shí)長(zhǎng);流量數(shù)據(jù)包含的字段有用戶號(hào)、時(shí)間戳、基站LAC和CI、上行流量、下行流量、上網(wǎng)時(shí)長(zhǎng)。其中基站的LAC和CI對(duì)應(yīng)的Long和Lat數(shù)據(jù)包含在電信運(yùn)營(yíng)商提供的某市內(nèi)所有地區(qū)中基站的數(shù)據(jù)中,數(shù)據(jù)中基站對(duì)應(yīng)的Long,Lat屬于WGS坐標(biāo)。
通過使用Java中的HttpClient技術(shù),使用某些網(wǎng)站提供的公開API,獲取某市各鎮(zhèn)的邊界經(jīng)緯度坐標(biāo)和某市小區(qū)區(qū)域邊界坐標(biāo),供369個(gè)小區(qū)數(shù)據(jù)。后期經(jīng)過ETL工具對(duì)已采集數(shù)據(jù)進(jìn)行清洗和糾正,將兩份數(shù)據(jù)在時(shí)間間隔較短中重復(fù)的用戶號(hào)去除,并將數(shù)據(jù)格式轉(zhuǎn)換成合適的格式和類型,方便ELASTICSEARCH進(jìn)行數(shù)據(jù)檢索和存儲(chǔ)。
本文基于人口大數(shù)據(jù)平臺(tái)處理運(yùn)營(yíng)商提供源數(shù)據(jù)和采集系統(tǒng)獲取到的相關(guān)數(shù)據(jù),對(duì)某市的各鎮(zhèn)做了人口密度統(tǒng)計(jì)、人口流動(dòng)統(tǒng)計(jì)和個(gè)人位置移動(dòng)記錄,此平臺(tái)總共可分為4個(gè)模塊,分別是采集模塊、數(shù)據(jù)存儲(chǔ)模塊、分析處理模塊、面板顯示模塊。本平臺(tái)采用7臺(tái)服務(wù)器進(jìn)行搭建分布式的平臺(tái)環(huán)境,系統(tǒng)使用的版本號(hào)分別為:elasticsearch-6.7.0,hadoop-2.7.7,flink-1.8.0,kafka_2.11-2.2.0,springboot-2.1.7。
通過數(shù)據(jù)采集獲取源數(shù)據(jù)和輔助數(shù)據(jù),本次使用測(cè)試數(shù)據(jù)大約在50 GB左右,考慮傳統(tǒng)數(shù)據(jù)庫(kù)后期處理TB數(shù)據(jù)時(shí)各項(xiàng)壓力較大,則采用HDFS存儲(chǔ)數(shù)據(jù)。存儲(chǔ)在HDFS中的源數(shù)據(jù)可通過Flume提供的接口導(dǎo)入在Flink中,在兩項(xiàng)流程中插入Kafka,可降低對(duì)服務(wù)器的IO操作,進(jìn)行數(shù)據(jù)緩存。整個(gè)平臺(tái)數(shù)據(jù)挖掘則利用Flink批處理技術(shù)進(jìn)行數(shù)據(jù)清洗,對(duì)人口密度、個(gè)人流動(dòng)軌跡、區(qū)域流動(dòng)做出不同處理方式和數(shù)據(jù)的處理。最后將數(shù)據(jù)導(dǎo)入Elasticsearch中檢索出數(shù)據(jù)可視化對(duì)應(yīng)的數(shù)據(jù)。平臺(tái)整個(gè)具體操作流程如圖3所示,包括從數(shù)據(jù)采集到數(shù)據(jù)可視化的一整流程。
圖3 數(shù)據(jù)處理流程
為滿足不同需求而對(duì)數(shù)據(jù)進(jìn)行不同的處理,F(xiàn)link作為此平臺(tái)的數(shù)據(jù)清洗,導(dǎo)入Elasticsearch進(jìn)行數(shù)據(jù)檢索,因此對(duì)后期數(shù)據(jù)檢索的效率有重大影響。人口密度功能的數(shù)據(jù)實(shí)時(shí)性相對(duì)于人口流動(dòng)軌跡和區(qū)域人口流動(dòng)來(lái)說較弱,所以采用流式處理,而另外兩個(gè)采用批示處理。Flink數(shù)據(jù)清理流程如圖4所示。
圖4 平臺(tái)鐘Flink數(shù)據(jù)清洗過程
文章主要構(gòu)建一個(gè)以大數(shù)據(jù)技術(shù)分析通信數(shù)據(jù)的平臺(tái),最終以可視化形式展示平臺(tái)分析內(nèi)容。通過市級(jí)數(shù)據(jù)展開分析,從多角度和多功能進(jìn)行數(shù)據(jù)挖掘,描述了人口大數(shù)據(jù)分析平臺(tái)的設(shè)計(jì)過程和原則,對(duì)Hadoop的相關(guān)研究和平臺(tái)相關(guān)架構(gòu)展開描述,最終設(shè)計(jì)出某市的各鎮(zhèn)人口密度、各鎮(zhèn)人口流動(dòng)、小區(qū)人口分布以及個(gè)人人口流動(dòng)軌跡的4個(gè)功能,對(duì)4個(gè)功能提供了可視化面板。
在平臺(tái)開發(fā)過程中,通過不斷測(cè)試和修改,再將結(jié)果與報(bào)告進(jìn)行對(duì)比后不斷完善平臺(tái),希望最大限度地以精準(zhǔn)、高效、人性化方式支撐各領(lǐng)域政府工作。