唐紅杰
(遼寧警察學(xué)院 公安信息系,遼寧 大連 116036)
隨著我國經(jīng)濟(jì)社會的不斷發(fā)展,財產(chǎn)型犯罪特別是盜竊犯罪有不斷增加的趨勢,影響了社會的和諧穩(wěn)定?;诖?,本研究試圖將盜竊案件大數(shù)據(jù)集進(jìn)行分類匯總,統(tǒng)計出 X 市盜竊案件中各副類別發(fā)生的頻次,以便于公安機(jī)關(guān)對盜竊類案件進(jìn)行有針對性的預(yù)防和應(yīng)對處理。以此類推,也可以將研究過程和研究結(jié)果加以借鑒,應(yīng)用于其他案件的統(tǒng)計分析和應(yīng)對處置中。
本研究結(jié)合公安實踐,進(jìn)行深入調(diào)查研究,再進(jìn)行脫敏處理,得到盜竊類案件的大數(shù)據(jù)集。大數(shù)據(jù)集中涵蓋如下字段信息:
案件編號,案件主類別,案件副類別,案件名稱,金額,案件來源,案發(fā)時間上限,案發(fā)時間下限,案發(fā)地址,受案時間,報案時間
下面列舉出其中的兩條樣例數(shù)據(jù):
A20200316092005,盜竊,單位室內(nèi)盜竊,王某元被盜案,5200 元,事主發(fā)現(xiàn),2020 年03月16 日21 時05 分00 秒,2020 年03 月17 日08 時20 分00 秒,X 市Y 區(qū),2020 年03 月17日21 時05 分49 秒,2020 年03 月17 日08 時20 分11 秒
A20201008020152,盜竊,盜竊電動車,章某安被盜案,3000 元,事主發(fā)現(xiàn),2020 年10 月7 日22 時00 分00 秒,2020 年10 月8 日08 時20 分00 秒,X 市Z 區(qū),2020 年10 月8 日10 時05 分38 秒,2020 年10 月8 日16 時40 分35 秒
本研究的目的是針對以上數(shù)據(jù)格式的盜竊案件大數(shù)據(jù)集,依據(jù)案件副類別進(jìn)行統(tǒng)計分析,如統(tǒng)計出“單位室內(nèi)盜竊”該副類別的案件數(shù)量,繼而根據(jù)盜竊案件各副類別發(fā)生的頻次,有針對性、有目標(biāo)性地進(jìn)行預(yù)防和處置,以便更好地服務(wù)于公安工作。
Hadoop是Apache開放基金會組織推出的集分布式存儲和分布式計算處理于一身的大數(shù)據(jù)平臺,它具有高效、可靠、分布式、可擴(kuò)展等特點。該平臺能夠在相對廉價的計算機(jī)集群中使用相對簡單的計算框架來處理大規(guī)模數(shù)據(jù)集,這與傳統(tǒng)的分布式存儲和分布式計算處理主要依賴于高價格、高性能基礎(chǔ)硬件的方式完全不同[1]。計算機(jī)集群可以從單個服務(wù)器擴(kuò)展到數(shù)百個甚至數(shù)千個,每個服務(wù)器均可提供本地數(shù)據(jù)存儲和計算處理;主要在應(yīng)用層完成故障檢測和修復(fù)處理,以此來保證整個集群的高可用性。
HDFS分布式文件系統(tǒng)是Hadoop平臺中負(fù)責(zé)存儲的核心組件。它具有存儲量大、容錯性高、吞吐力強(qiáng)、擴(kuò)展性好、負(fù)載均衡等特點。MapReduce分布式并行計算框架,采用“分而治之”的策略,設(shè)計理念是“計算向數(shù)據(jù)靠攏”,而不是“數(shù)據(jù)向計算靠攏”,大大地降低了網(wǎng)絡(luò)傳輸開銷[2]。在具體處理過程中,HDFS分布式文件系統(tǒng)會將存儲的大規(guī)模數(shù)據(jù)集,首先切分成眾多相對獨立的分片,這些獨立的分片會被分配給同樣眾多的Map任務(wù)并行處理;Map任務(wù)處理完的結(jié)果形成“鍵-值”對樣式的輸出集,即
圖1 MapReduce 數(shù)據(jù)處理邏輯
為了達(dá)到前述研究目的,本研究借助Hadoop 大數(shù)據(jù)相關(guān)處理技術(shù),安裝、配置、啟動Hadoop 大數(shù)據(jù)處理平臺;將盜竊案件的大數(shù)據(jù)集上傳到 HDFS 分布式文件系統(tǒng)中指定的路徑(文件夾)下,利用 Java 語言編寫并執(zhí)行MapReduce 程序,進(jìn)行盜竊案件副類別的統(tǒng)計分析,最后得到分析結(jié)果,用于指導(dǎo)實踐。
本研究中,Map任務(wù)處理階段處理X市盜竊案件副類別統(tǒng)計分析,主要設(shè)計思路是從數(shù)據(jù)集的每行文本中提取出案件副類別列,每遇到一個案件副類別則將其轉(zhuǎn)換成一個
MapReduce 程序具體實現(xiàn)過程如下:
1.整個處理過程的實現(xiàn)包括 Map 端程序、Reduce 端程序、Driver 端主控程序或驅(qū)動程序。
2.Map 端程序要求數(shù)據(jù)的輸入格式為單個的
3.經(jīng)過Map 端程序的執(zhí)行,會輸出一組
4.Map 端程序的處理任務(wù)主要放在從父類繼承并重寫的map()方法中進(jìn)行。Map 任務(wù)對每一個
5.Map 端程序輸出的數(shù)據(jù),即
6.Reduce 端程序的處理任務(wù)主要放在從父類繼承并重寫的reduce()方法中進(jìn)行。
7.針對具有相同關(guān)鍵字即相同
8.整個流程最終需要一個主控程序或驅(qū)動程序即Driver 端程序來進(jìn)行提交、運(yùn)行。
Map 階段處理X 市盜竊案件副類別統(tǒng)計分析,主要設(shè)計思路是從每行文本中提取出案件副類別列,每遇到一個案件副類別則將其轉(zhuǎn)換成一個
Map 端程序編寫思路如下:
1.利用集成開發(fā)環(huán)境Eclipse,在Eclipse 中創(chuàng)建相應(yīng)的包和類。例如創(chuàng)建名稱為 “Theft-Mapper” 的class 文件。
2.TheftMapper 類繼承 Mapper 父類,TheftMapper 類的數(shù)據(jù)輸入格式及數(shù)據(jù)輸出格式,如前所述,都是
3.TheftMapper 中的用戶自定義業(yè)務(wù)邏輯寫在map()方法中,獲取每行文本,使用toString()方法將文本轉(zhuǎn)化為字符串,使用split()方法依據(jù)分隔符來切分每行文本,提取案件副類別一列,將案件副類別作為key,將次數(shù)1 作為value。
Reduce 階段的任務(wù)是將接收到的Map 階段處理結(jié)果,按照key 對value 做匯總計數(shù)。
Reduce 端程序具體實現(xiàn)過程如下:
1.創(chuàng)建名為“TheftReducer”的class 文件。
2.自定義的TheftReducer 類繼承Reducer 父類,如前所述,Reducer 的輸入和輸出數(shù)據(jù)都是
3.TheftReducer 中的用戶自定義業(yè)務(wù)邏輯寫在reduce()方法中,定義計數(shù)器totalNumber,用作每個案件副類別的結(jié)果匯總,初始值為0;遍歷一組迭代器,進(jìn)行累積求和;將案件副類別作為 key,將每個副類別對應(yīng)的總次數(shù)作為 value輸出。
Driver 端程序相當(dāng)于主控程序或驅(qū)動程序,具體實現(xiàn)過程如下:
1.創(chuàng)建名為“TheftMain”的class 文件。
2.創(chuàng)建配置文件對象,要求程序使用本地運(yùn)行模式,需要處理的盜竊案件輸入數(shù)據(jù)集和最終的統(tǒng)計結(jié)果均在HDFS 分布式文件系統(tǒng)中,需要配置參數(shù):conf.set(“fs.defaultFS”,“hdfs://local host:9000”)。
3.使用Job.getInstance()創(chuàng)建一個Job 對象。
4.使用Job 對象的setJarByClass()方法打包作業(yè)。
5.使用Job 對象的setMapperClass()方法和setReducerClass()方法分別指定自定義的Mapper類和Reducer 類。
6.使用Job 對象的setOutputKeyClass()方法和setOutputValueClass()方法指定ReduceTask 的輸出
7.設(shè)置輸入輸出文件目錄:使用HDFS Shell的創(chuàng)建目錄命令,在HDFS 的根目錄(/)下,級聯(lián)創(chuàng)建theft/input 目錄。使用FileInputFormat.setInputPaths() 方法設(shè)置輸入目錄為/theft/input;使用FileOutputFormat.setOutputPath() 方法設(shè)置輸出文件目錄為/theft/output。
8.使用Job 對象的waitForCompletion()方法提交并運(yùn)行作業(yè)。
有兩種途徑可以查看統(tǒng)計結(jié)果:一是使用HDFS Shell 命令來查看,結(jié)果存儲在HDFS 分布式文件系統(tǒng)的指定路徑,即/theft/output 目錄下的“part-r-00000”文件中,該文件由程序運(yùn)行后自動生成;二是直接在Java 集成開發(fā)環(huán)境Eclipse中查看。盜竊類案件統(tǒng)計結(jié)果顯示:居民室內(nèi)盜竊406 起,盜竊電動車399 起,單位室內(nèi)盜竊112 起,盜竊居民小區(qū)車輛112 起,盜竊汽車內(nèi)物品87 起,盜竊街面車輛70 起,盜竊路邊店70 起,如圖2 所示。
圖2 盜竊類案件統(tǒng)計結(jié)果
根據(jù)上述統(tǒng)計結(jié)果,可以看出居民室內(nèi)盜竊、盜竊電動車、單位室內(nèi)盜竊、居民小區(qū)車輛盜竊等類型的盜竊案件發(fā)生頻率較高,而盜竊街面汽車、盜竊路邊店、盜竊電纜線及“三電”設(shè)施、盜竊浴室更衣柜財物、拎包盜竊等類型盜竊案件發(fā)生頻率次之,盜竊空調(diào)外機(jī)、車輛燃油、車輛輪胎等類型的盜竊案件發(fā)生頻率較低。由此可見,盜竊案件的作案地點多是有選擇性的,一般多發(fā)生于無人看管的居民室內(nèi)、單位室內(nèi),多集中于居民小區(qū)內(nèi)的車輛以及方便盜走的電動車上;盜竊財物也大多是易于攜帶和方便轉(zhuǎn)移的,盜竊空調(diào)外掛機(jī)、車輛燃油、車輛輪胎類案件相對較少。
根據(jù)上述分析,公安民警可以將盜竊案件防范工作的重點放在居民室內(nèi)、單位室內(nèi);尤其是放在主人外出而空置的房屋居所以及居民小區(qū)內(nèi)的車輛和電動車上。對于臨街鋪面、路邊店,這些明顯暴露于犯罪分子視線內(nèi),易于踩點、方便進(jìn)出的地方也應(yīng)加強(qiáng)巡邏和管控,以便及時發(fā)現(xiàn)可疑分子,防患于未然,在盜竊案件發(fā)生后,能夠更積極有效地進(jìn)行應(yīng)對和處置。與此同時,還可以在居民小區(qū)、企事業(yè)單位、臨街商鋪中,綜合采取宣傳走訪、網(wǎng)絡(luò)互動、定期科普等方式,提高廣大人民群眾預(yù)防盜竊的警惕性,做到多管齊下、未雨綢繆,從而更高效、更精準(zhǔn)地預(yù)防和處置盜竊案件,保證人民群眾的生命財產(chǎn)安全。