文/羅旭芷 宋亞威 聶成
如今大數據分析與挖掘技術受到了各類生活、電商、社交、影音類應用平臺的青睞,并成為實現對客戶畫像、產品精準營銷的重要手段。本志愿服務管理系統集成了分布式數據管理、大數據并行計算技術,是最新的大數據處理技術在志愿服務管理中的一種實踐。其相比于傳統的數據存儲方式更為靈巧輕快,更具安全性,在功能的設計上更提高了組織管理效率和有效信息的利用率。
本文將以郴州福城志愿者協會作為實例,介紹Android平臺、Hbase+Spark技術的引入,為志愿服務管理的信息安全化、精準化提供一種新的方式。
HBase作為一種分布式的、面向列的開源數據庫,可以對實時流入的數據進行處理,并對外提供在線查詢功能,它的性能優越性體現在其高吞吐、低延遲、好的隨機及范圍查詢能力上,并能存儲海量數據等,同時支持多版本、增量導入和多維刪除,是志愿者服務管理系統開發中的不二只選,迎合了志愿者服務過程中的活動信息量大,參與人數多,互動社交性強的特點。但其在流式數據的處理上卻存在難以實現復雜分析等功能的缺陷,于是我們采用Spark與其結合。
Spark是基于集群類分布式和內存抽象計算的大數據并行處理框架,可支持構建低延遲、大型的數據分析應用程序。具備著全面、友好的特點,不僅支持流式處理、復雜的SQL分析、圖計算等模型,可多模型組合解決場景問題,還支持多種語言多種數據庫配合開發。利用Hbase+Spack構建數據倉,既提升性能,更降低了開發成本。
StackMod移動開發云平臺是一款基于云計算的后端云服務系統,相比傳統服務器它更具可伸縮性、更為便捷、更加安全可靠。它可為移動應用開發者提供存儲解決方案、實時分析、消息推送、多種社交網站的集成、并能提供位置信息、廣告等服務,通過StackMod可以極大地簡化工作,快遞構建和部署API架構,并短時間內在云端激活,有助于我們花更多的時間在核心功能的設計開發上。
因為涉及客戶端的開發,并需要實現APP的個性化設計和安全設計,本系統利用Android Studio開發工具進行開發,采用Client/Serve結構,如圖1所示。系統采用StackMod后端云來支持后端發布服務,利用HBase數據庫存放用戶產生的數據,服務器端與客戶端通過移動數據網絡進行通信,實現數據交互。
根據需求分析,設計劃分出活動、用戶、管理員、數據分析四大主要模塊。系統E-R圖如圖2所示。

圖1:系統功能結構拓撲圖

圖2:系統E-R圖

圖3:注冊/登錄流程圖
使用StackMod后端云創建該系統所需數據庫。在數據庫表的設計中包括了v_userinfo、a_content、a_record、b_analysls、a_diary、a_theme、a_time等多個表。主要的v_userinfo表用于存放賬戶基本信息,性別、年齡、地區、頭像、登錄日志、在線時位置等字段;a_content表用于存放活動的主題、時間、地點、簡介、限定人數等信息;a_record表用于存放活動跟帖中的圖片、文字、參與活動用戶中用戶在線異動記錄;b_analysls表用于存放數據分析產生的關鍵字。
本系統直接通過手機獲取驗證碼登錄,第一次登錄即默認注冊并創建賬號,登錄時需要用戶輸入手機號碼和驗證碼,我們直接使用騰訊云的Captcha驗證碼服務,點擊登錄按鈕后,Android移動端連接Hbase云服務器,服務器對登錄信息進行驗證檢查,驗證是否存在實名信息,若已存在,用戶可直接登錄到主界面,若無認證信息,用戶跳轉至認證頁面,系統調用NCIIC接口進行認證。具體實現流程如圖3所示。
活動管理模塊使用android自帶的EditView、TextView、ImageView、ListView控件進行輸入,調用setImageResource、setText方法獲取數據庫圖片及文字信息在用戶端進行顯示。控件綁定相應事件,對管理員及普通用戶的點擊進行響應。例如,審核界面中的“通過審核”控件綁定onItemClick事件,核心代碼如下:
Pass pass = PassList.get(position);String thinkrid = map.get("t_define");//調用Pass類
Toast.makeText(HbaseCRUDActivity.this,Passed+”t_define”,Toast.LENGTH_LONG).show(); //將t_define確定值賦給thinkrid,后臺獲取確定值的同時反饋給管理員操作成功。
下載安裝并配置好Scala及Spack文件及環境,在Android Studio中導入Spark Jar文件,在scr下建立Spark工程包并創建Scala入口,將類改為對象,并編寫主函數入口,導入依賴包,關鍵詞計算核心代碼:
conf.setAppName("V_manage_s")//創 建SparkCore的程序入口
valsc = new SparkContext(conf)//讀取文件生成RDD
val lines=sc.textFile("hbase://node1:8090/tmp/a_record.txt")//在Hbase中讀取數據,通過函數進行處理,對具體數據進行計算
valsortRdd: RDD[(String,Int)]= arecordCount.sortBy(tuple => tuple._2,false)//對數據結果進行保存sortRdd.saveAsTextFile("hbase://node1:8090/tmp/b_analysis.txt")數據與客戶端管理界面通過http連接,顯示。
本文采用Hbase+Spack技術和Android studio平臺,實現了以福城志愿者協會為例的志愿服務管理APP的開發。實現在志愿者們使用APP組織管理活動的過程中,對其賬戶及操作信息進行分析,在主頁推薦其感興趣和適合的公益活動,并在特定的時間周期內生成數據報告,分析志愿者群體們關心的問題和需要改善的方向反饋給組織管理者。驗證碼動態登錄保證了賬戶的安全,實名認證一定程度上保證了活動的順利進行,起到痕跡化管理的作用。研發前我們通過社群構建等方式對項目進行了試運營,在研發過程中結合前期的實踐設計了APP的功能,在后期我們將不斷地優化迭代,并將其投入市場廣泛應用,為公益事業的進步添磚加瓦。