楊凡 孫力群
摘要:大部分住宿型學(xué)校各種校園消費(fèi)支付的第三方電子業(yè)務(wù)系統(tǒng)已經(jīng)部署實(shí)施,校園消費(fèi)活動(dòng)每天產(chǎn)生大量交易數(shù)據(jù),這些數(shù)據(jù)蘊(yùn)含隱藏著在學(xué)生生活管理、后勤服務(wù)和保障、關(guān)聯(lián)活動(dòng)預(yù)警、商戶類型布局預(yù)測(cè)、商戶活動(dòng)評(píng)估和過(guò)程考核中的管理價(jià)值。但大多數(shù)院校對(duì)這些原始數(shù)據(jù)沒(méi)能開展充分有效的數(shù)據(jù)分析和利用。該項(xiàng)目就是為解決這一管理痛點(diǎn),由我校大數(shù)據(jù)競(jìng)賽團(tuán)隊(duì)設(shè)計(jì)開發(fā)的校園消費(fèi)行為大數(shù)據(jù)分析系統(tǒng),對(duì)接我校智慧校園建設(shè)項(xiàng)目,現(xiàn)已進(jìn)入模塊測(cè)試階段。通過(guò)hadoop,hive,scikit-learn、flask、echarts等大數(shù)據(jù)分析、開發(fā)和可視化技術(shù)開發(fā)大數(shù)據(jù)分析系統(tǒng)。通過(guò)對(duì)住宿型學(xué)校學(xué)生消費(fèi)行為和業(yè)務(wù)的數(shù)據(jù)結(jié)構(gòu)梳理和形式化定義,發(fā)現(xiàn)并顯式化這些業(yè)務(wù)的各種數(shù)據(jù)分析需求。設(shè)計(jì)模塊化、參數(shù)化的應(yīng)用架構(gòu),為校園智慧化建設(shè)賦能。該文闡述了項(xiàng)目起源、技術(shù)平臺(tái)和設(shè)計(jì)架構(gòu)。并重點(diǎn)介紹了數(shù)據(jù)采集、清洗和預(yù)處理的設(shè)計(jì)思路和理念。
關(guān)鍵詞:校園消費(fèi);大數(shù)據(jù);數(shù)據(jù)采集;數(shù)據(jù)清洗;數(shù)據(jù)可視化;hadoop
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)29-0044-03
1 背景
大部分住宿型學(xué)校(高校、職業(yè)院校)實(shí)施了各類業(yè)務(wù)系統(tǒng),學(xué)生在校園的各類學(xué)習(xí)和生活消費(fèi)行為,只要是經(jīng)過(guò)業(yè)務(wù)系統(tǒng)的,都完整記錄了消費(fèi)明細(xì)數(shù)據(jù)。當(dāng)前的高校信息化建設(shè)已經(jīng)進(jìn)入了一個(gè)以“智慧校園”建設(shè)為主題的新時(shí)期[1]。這些數(shù)據(jù)價(jià)值的挖掘與分析,往往只做了簡(jiǎn)單的統(tǒng)計(jì)報(bào)告。數(shù)據(jù)內(nèi)在的、隱性的價(jià)值、各類數(shù)據(jù)之間的關(guān)系分析沒(méi)有揭示出來(lái),每天生成的海量數(shù)據(jù)沒(méi)有進(jìn)行高度價(jià)值化的挖掘分析,數(shù)據(jù)反映的問(wèn)題只能靠管理人員的經(jīng)驗(yàn)和直覺(jué)才能發(fā)現(xiàn),并且已有較大的滯后性。我們開發(fā)目標(biāo)就是針對(duì)這些痛點(diǎn)和難點(diǎn),采用通用化的產(chǎn)品級(jí)平臺(tái)+配置式定制開發(fā)+增值式數(shù)據(jù)服務(wù)的開發(fā)模式。
通用化的產(chǎn)品級(jí)平臺(tái):成熟的開源技術(shù)架構(gòu)、基于行業(yè)共性業(yè)務(wù)特征的組件化設(shè)計(jì)。
配置式定制開發(fā):基于產(chǎn)品級(jí)通用平臺(tái),柔性化開發(fā)以滿足機(jī)構(gòu)客戶個(gè)性化數(shù)據(jù)分析場(chǎng)景,追求通用平臺(tái)與個(gè)性定制間成本與效益平衡。采用高度通用化平臺(tái):通過(guò)hadoop、hive、scikit-learn、flask、echarts等大數(shù)據(jù)分析、開發(fā)和可視化技術(shù),開發(fā)通用性的校園消費(fèi)行為大數(shù)據(jù)分析系統(tǒng)。
增值式數(shù)據(jù)服務(wù):通過(guò)客戶學(xué)校部署的大數(shù)據(jù)分析系統(tǒng),基于數(shù)據(jù)分析結(jié)果,為客戶提供更加詳盡的業(yè)務(wù)數(shù)據(jù)報(bào)告,或接受全權(quán)委托代理的大數(shù)據(jù)應(yīng)用分析系統(tǒng)的管理服務(wù)?;诳蛻糇陨順I(yè)務(wù)數(shù)據(jù)特征,通過(guò)不斷累積的本行業(yè)大數(shù)據(jù)開發(fā)應(yīng)用經(jīng)驗(yàn),提供數(shù)據(jù)診斷方案,為智慧校園管理賦能。
2 系統(tǒng)框架設(shè)計(jì)
校園消費(fèi)行為大數(shù)據(jù)分析系統(tǒng)產(chǎn)品技術(shù)架構(gòu)采用分層模塊化的大數(shù)據(jù)生態(tài)圈組件?;A(chǔ)計(jì)算平臺(tái)采用高可用性Apache Hadoop。結(jié)構(gòu)層次如圖1所示。
校園大數(shù)據(jù)分析平臺(tái)采用多層架構(gòu),將大數(shù)據(jù)處理、數(shù)據(jù)交換與共享、基于關(guān)系型和統(tǒng)計(jì)型大數(shù)據(jù)存儲(chǔ)、權(quán)限管理、大數(shù)據(jù)分析挖掘進(jìn)行有效整合,貫通校園大數(shù)據(jù)管理和應(yīng)用的各個(gè)環(huán)節(jié),從而適應(yīng)于多維異構(gòu)環(huán)境下校園大數(shù)據(jù)處理要求,實(shí)現(xiàn)海量數(shù)據(jù)的高效管理[2]。
1)項(xiàng)目的分析數(shù)據(jù)源來(lái)在校園消費(fèi)的第三方支付平臺(tái),通過(guò)模擬訪問(wèn)終端的訪問(wèn)模式,將每天交易記錄先存儲(chǔ)成本地文件,再追加到hadoop平臺(tái)HDFS的待處理文件中。而關(guān)聯(lián)的消費(fèi)者學(xué)生信息則來(lái)源于學(xué)校業(yè)務(wù)系統(tǒng),兩類數(shù)據(jù)在分析階段實(shí)現(xiàn)按需合并。
2)數(shù)據(jù)導(dǎo)人層主要通過(guò)flume組件將交易記錄導(dǎo)人到ha-doop HDFS文件,并將業(yè)務(wù)系統(tǒng)的學(xué)生數(shù)據(jù)定期更新到HDFS中,并做必要的數(shù)據(jù)清洗。需要注意的是,系統(tǒng)首次導(dǎo)人的時(shí)候需要將業(yè)務(wù)數(shù)據(jù)一次性全量導(dǎo)人,以后則是定期增量導(dǎo)人。
3)數(shù)據(jù)預(yù)處理層包括數(shù)據(jù)清洗和格式轉(zhuǎn)換,清洗是將交易記錄中的損壞、缺失數(shù)據(jù)進(jìn)行無(wú)害化處理,格式轉(zhuǎn)換是將字段的物理內(nèi)容轉(zhuǎn)換成分析時(shí)所需要的形式。這里采用mapReud-ce技術(shù),逐記錄按既定規(guī)則進(jìn)行基礎(chǔ)的清洗和轉(zhuǎn)換,生成待分析的hdfs文件。
4)數(shù)據(jù)分析層使用hadoop生態(tài)系統(tǒng)中的hive組件,hive組件使用SQL風(fēng)格的語(yǔ)言開發(fā)分析程序,上手容易,又能利用ma-pReduce引擎的云計(jì)算能力。整個(gè)系統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)由Hive來(lái)管理,也就是說(shuō),無(wú)論是結(jié)構(gòu)化數(shù)據(jù)還是半結(jié)構(gòu)化數(shù)據(jù),獲取數(shù)據(jù)都是以Hive表的形式輸出到數(shù)據(jù)分析層。
5)數(shù)據(jù)可視化層是終端用戶直接接觸的內(nèi)容,以Web方式表現(xiàn)是最友好的使用模式。數(shù)據(jù)分析層Hive分析后的結(jié)果用sqoop組件導(dǎo)人到后臺(tái)的MYSQL數(shù)據(jù)庫(kù)中。項(xiàng)目使用flask、sqlachemy構(gòu)建網(wǎng)站后臺(tái),從MYsoL讀取分析后數(shù)據(jù),在瀏覽器端使用echarts圖表組件以曲線圖,柱狀圖等形式顯示大數(shù)據(jù)分析結(jié)果[3]。
3 數(shù)據(jù)采集與預(yù)處理設(shè)計(jì)
3.1數(shù)據(jù)采集功能設(shè)計(jì)
數(shù)據(jù)采集程序通過(guò)PVthon代碼編寫任務(wù)腳本,定時(shí)任務(wù)實(shí)現(xiàn)每天零點(diǎn)準(zhǔn)時(shí)獲取上一日數(shù)據(jù)。通過(guò)抓取禧云第三方支付商戶平臺(tái)API文檔獲取每天交易記錄的數(shù)據(jù)[4],實(shí)現(xiàn)自動(dòng)化獲取流水記錄并保存至本地文件。抓取的記錄為全校所有餐飲商戶的日記錄,是增量式數(shù)據(jù)采集模式。
設(shè)計(jì)思路:準(zhǔn)備好接口所需要的參數(shù)(token和流水開始結(jié)束日期)→模擬登錄禧云商家平臺(tái)獲取賬戶的token→利用代碼獲取當(dāng)日日期和昨日日期→向服務(wù)器發(fā)送請(qǐng)求并保存數(shù)據(jù)至本地目錄,核心代碼如下:
class Timing_collect(object):
def' _init_(self):
while 1:
print(time.strftime(”%H:%M:%S”, time.localtime0》
if (time.strftime(”%H:%M:%S”, time.localtime0)==OO:OO:OO'):
self.dateStart= str(self.getYesterday0)
self.dateEnd= str(datetime.date.today0)
loop=1
while loop:
tw:
self.run0
loop=0
except:
pass
time.sleep(l)
def run(self):
self.s= requests.Session0
self.login0
self.save_excel0
def login(self):
login_url=7https://xr.xiyunerp.com/api/vl/user/login 7
self.data=f
'username':some,
'password' : 'some',
'verif'icationr : r r
}
self.headers = {
'User-Agent' : ' Mozilla/5.0 (Windows NT 10.0; Win64;x64; rv:74.0) Gecko/20100101 Firefox/74.Or
}
response = self. s. post(login_url, data = self. data, head-ers = self.headers).text
response = json.loads(response)
self.token = response[ 'bizContent ' ][ 'token ']
print(登錄成功! ')
def getYesterday(self):
today = datetime.date.today0
oneday = datetime.timedelta(days=l)
yesterday = today - oneday
retum yesterday
def save_excel(self):
print(r %s流水在保存 …… '%self.dateStart)
url =
3.2 預(yù)處理功能設(shè)計(jì)
通過(guò)各管理平臺(tái)采集后的數(shù)據(jù)需要進(jìn)行清洗過(guò)濾,以去除重復(fù)數(shù)據(jù)、異常值和缺失值,為數(shù)據(jù)挖掘提供良好的數(shù)據(jù)基礎(chǔ)[5】。以行為單位的物理清洗和格式轉(zhuǎn)換在MapReduce中完成,MapReduce整個(gè)處理過(guò)程可以概括為以下階段:輸入一>map->shuffle->reduce->輸出,以下示例說(shuō)明。
1)實(shí)現(xiàn)Mapper重寫map0方法。
map類繼承了庫(kù)類中的Mapper,即Mapper。通常map類中會(huì)重寫map方法,map每次只接受一個(gè)key-value,然后對(duì)其進(jìn)行預(yù)處理,再分發(fā)出處理后的數(shù)據(jù)
public class MyMapper extends Mapperf
Text text= new Text0;
@Override
protected void map(LongWritable key, Text value, Mapper.Context context)()
2)數(shù)據(jù)預(yù)處理去除干擾字符,清洗特殊字符。
String retValue= value;
retValue= value.toStringO.replace(‘|,'一')-//將l替換為一
retValue= retValue. toString0. replaceAIl(”\\r\\t”,””);//將換行符刪除
3)在map階段通過(guò)split(”,”)得到每行數(shù)據(jù)字段數(shù)據(jù)的數(shù)組。
StringD split= reValue.toString().split(”,”);
4)用trim()方法去除字符串兩端空格并用isEmpty0判斷是否有字段的數(shù)據(jù)為空,不為空開始進(jìn)一步處理。
private boolean CheckData(Stringo paramArr){
for(int i=0;i
if(paramArr[i].trimO.isEmpty()){
return false;
))return true;)
5)日期格式轉(zhuǎn)換。
String now= split[7];
Date date=new SimpleDateFormat(”yyyy/MM/dd hh:mm”).parse(now);
now=new SimpleDateFoⅡnat(”yyvv—MM—dd hh:mm”).format(date);
6)選出需要的數(shù)據(jù),按指定格式輸出。
StringRevalue=String.format(”%s,%s,%s,%s,%s”,now,split[2],split[4],split[5],split[6])
7)輸出數(shù)據(jù)。
text.setfRevalue1:
context.write(text,NullWritableget0)
4 系統(tǒng)研發(fā)小結(jié)
作為一個(gè)參加“互聯(lián)網(wǎng)+”創(chuàng)新創(chuàng)業(yè)大賽的項(xiàng)目,我們通過(guò)技術(shù)開發(fā)和初始運(yùn)作,有了一些心得體會(huì)。
客戶痛點(diǎn):校園消費(fèi)的第三方支付平臺(tái)存在數(shù)據(jù)展示信息價(jià)值低、數(shù)據(jù)單一、信息不直觀等問(wèn)題;沒(méi)有專門的平臺(tái)用來(lái)展示這些分析和挖掘過(guò)后的數(shù)據(jù),客戶交互性弱,擴(kuò)展性弱;海量業(yè)務(wù)數(shù)據(jù)無(wú)法直觀反映內(nèi)在的問(wèn)題,只能靠管理人員的經(jīng)驗(yàn)和直覺(jué)才能發(fā)現(xiàn),并且已有較大的滯后性;客戶對(duì)大數(shù)據(jù)分析應(yīng)用于校務(wù)管理與決策的認(rèn)識(shí)程度不夠,守著數(shù)據(jù)不知如何充分利用。
市場(chǎng)現(xiàn)狀與機(jī)遇:移動(dòng)互聯(lián)、物聯(lián)網(wǎng)、云計(jì)算、社交網(wǎng)絡(luò)、Web的快速發(fā)展讓學(xué)生校園行為數(shù)據(jù)前所未有的增長(zhǎng),海量數(shù)據(jù)中必然蘊(yùn)含著巨大的價(jià)值[6];大部分企業(yè)或高校對(duì)大數(shù)據(jù)認(rèn)知程度不高,不懂得如何將積累的海量業(yè)務(wù)數(shù)據(jù)充分利用,市場(chǎng)客戶需要培育;客戶對(duì)實(shí)現(xiàn)的技術(shù)方式不甚了解,對(duì)數(shù)據(jù)安全有疑慮,市場(chǎng)和客戶對(duì)產(chǎn)品接受有一定障礙;大公司定做大數(shù)據(jù)平臺(tái)價(jià)格高、面向客戶的門檻較高。
市場(chǎng)發(fā)展前景:住宿型學(xué)?;鶖?shù)很大,在中心城市密集分布,具有業(yè)務(wù)復(fù)制的基礎(chǔ);每所學(xué)校學(xué)生數(shù)從幾千至幾萬(wàn),每天校園消費(fèi)活動(dòng)頻度很高,數(shù)據(jù)持續(xù)生成,海量業(yè)務(wù)數(shù)據(jù)有待充分利用;而絕大部分學(xué)校的校園消費(fèi)場(chǎng)景已對(duì)接支付寶等第三方支付平臺(tái),而且平臺(tái)數(shù)據(jù)所有權(quán)歸屬學(xué)校,完全具有進(jìn)一步實(shí)施大數(shù)據(jù)分析的技術(shù)和法律可行性;從宏觀市場(chǎng)上看,隨著國(guó)家大數(shù)據(jù)戰(zhàn)略推進(jìn)實(shí)施以及配套政策的貫徹落實(shí),大數(shù)據(jù)產(chǎn)業(yè)發(fā)展環(huán)境將進(jìn)一步優(yōu)化,社會(huì)經(jīng)濟(jì)各領(lǐng)域?qū)Υ髷?shù)據(jù)服務(wù)需求將進(jìn)一步增強(qiáng),大數(shù)據(jù)的新技術(shù)、新業(yè)態(tài)、新模式將不斷涌現(xiàn),產(chǎn)業(yè)規(guī)模將繼續(xù)保持高速增長(zhǎng)態(tài)勢(shì)。
參考文獻(xiàn):
[1]王亞楠.大數(shù)據(jù)背景下數(shù)據(jù)挖掘技術(shù)在高校中的應(yīng)用——以校園卡系統(tǒng)為例[J].華中師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2017.51(S1):9-12.
[2]李有增,曾浩.基于學(xué)生行為分析模型的高校智慧校園教育大數(shù)據(jù)應(yīng)用研究[J],中國(guó)電化教育,2018(7):33-38.
[3]宋文文,孫力群.大數(shù)據(jù)可視化數(shù)據(jù)加載模式比較分析[J]‘電腦知識(shí)與技術(shù),2019,36:11-12.
[4]李輝.Flask Web開發(fā)實(shí)戰(zhàn):入門、進(jìn)階與原理解析[M].北京:機(jī)械工業(yè)出版社。2018.
[5]禧云開放平臺(tái).APl文檔交易流水推送服務(wù)[EB/OL].[2020-02-20].http://www.caj cd.edu.c n/pub/wml.txt/9 808 10-2.html.
[6]李鐵波.基于校園大數(shù)據(jù)的學(xué)生行為特征分析與預(yù)測(cè)方法[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)),2019,33(7):201-206.
[7]鄧逢光,張子石,基于大數(shù)據(jù)的學(xué)生校園行為分析預(yù)警管理平臺(tái)建構(gòu)研究[J].中國(guó)電化教育,2017(11):60-64.
【通聯(lián)編輯:謝媛媛】
作者簡(jiǎn)介:楊凡(2000-),男,江蘇鎮(zhèn)江人,本科在讀,研究方向?yàn)榇髷?shù)據(jù)技術(shù)與應(yīng)用;孫力群(1972-),男,江蘇蘇州人,講師,碩士,研究方向?yàn)檐浖こ?、大?shù)據(jù)分析與開發(fā)。