張銳
(駐馬店職業(yè)技術(shù)學(xué)院 河南 駐馬店 463000)
基于Hive數(shù)據(jù)倉(cāng)庫(kù)的物流大數(shù)據(jù)平臺(tái)的研究與設(shè)計(jì)
張銳
(駐馬店職業(yè)技術(shù)學(xué)院 河南 駐馬店 463000)
針對(duì)物流企業(yè)數(shù)據(jù)倉(cāng)庫(kù)擴(kuò)展性不好、運(yùn)行自動(dòng)化程度不高、處理大規(guī)模數(shù)據(jù)效果較差等問題。本文通過對(duì)Hive技術(shù)的物流數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行分析,提出物流數(shù)據(jù)倉(cāng)庫(kù)的具體實(shí)現(xiàn)方案,該數(shù)據(jù)倉(cāng)庫(kù)結(jié)合云平臺(tái)虛擬化技術(shù),部署了 Hadoop和Hive環(huán)境,搭建了基于虛擬化技術(shù)的大數(shù)據(jù)處理平臺(tái)。同時(shí)從數(shù)據(jù)ETL和數(shù)據(jù)查詢分析處理兩方面對(duì)數(shù)據(jù)倉(cāng)庫(kù)的可擴(kuò)展性Hive數(shù)據(jù)存儲(chǔ)分析、Hive數(shù)據(jù)前置處理等進(jìn)行研究設(shè)計(jì)。通過Hive數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行效果進(jìn)行分析,表明該系統(tǒng)能夠很好地支持企業(yè)管理層決策。
智慧物流大數(shù)據(jù)平臺(tái);Hive數(shù)據(jù)倉(cāng)庫(kù);ETL;查詢分析
隨著電子商務(wù)的不斷壯大,物流業(yè)的蓬勃發(fā)展,物流數(shù)據(jù)開始呈現(xiàn)爆炸式增長(zhǎng)。目前用于物流行業(yè)的仍然是傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)居多,已有的物流信息管理系統(tǒng)的建設(shè)也大多采用常規(guī)的解決方案,即購(gòu)置昂貴的的大型服務(wù)器,以此為基礎(chǔ),采用數(shù)據(jù)庫(kù)分片的方式將數(shù)據(jù)存放到磁盤陣列中,這導(dǎo)致系統(tǒng)的擴(kuò)展升級(jí)較為困難,花費(fèi)巨大,且整個(gè)系統(tǒng)的耦合性較強(qiáng),難以滿足高效、可靠、經(jīng)濟(jì)的需求。然而,Hive數(shù)據(jù)倉(cāng)庫(kù)作為新型數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),其利用大數(shù)據(jù)集群的優(yōu)勢(shì),能夠采用普通服務(wù)器集群滿足物流企業(yè)對(duì)數(shù)據(jù)倉(cāng)庫(kù)提出的各項(xiàng)需求。因此,文中提出了基于Hive數(shù)據(jù)倉(cāng)庫(kù)的物流大數(shù)據(jù)平臺(tái)設(shè)計(jì)。
1.1 總體框架設(shè)計(jì)
DK智慧物流大數(shù)據(jù)平臺(tái)分為數(shù)據(jù)源、Hive數(shù)據(jù)倉(cāng)庫(kù)、Web展示共計(jì)3個(gè)模塊,總體架構(gòu)設(shè)計(jì)如圖1所示。
1)數(shù)據(jù)源

圖1 總體框架
數(shù)據(jù)源即基礎(chǔ)層,采用關(guān)系型數(shù)據(jù)庫(kù)管理業(yè)務(wù)數(shù)據(jù),為數(shù)據(jù)倉(cāng)庫(kù)提供原始物流數(shù)據(jù)。這些數(shù)據(jù)來源于不同操作:派件員通過手持 PDA掃描運(yùn)單條碼時(shí),該票運(yùn)單信息即入庫(kù),其狀態(tài)信息是“已收”。在一天結(jié)束后,對(duì)所有已收的貨物統(tǒng)一進(jìn)行過秤掃描,分揀員通過把槍 (類似于超市購(gòu)物結(jié)賬時(shí)使用的價(jià)錢掃描器件)掃描運(yùn)單條碼,同時(shí)輸入其發(fā)往地信息和重量信息,此時(shí)該運(yùn)單狀態(tài)對(duì)于發(fā)件人來說是“派件中”,而對(duì)于發(fā)件站來說是“應(yīng)派件”,對(duì)于下一個(gè)中轉(zhuǎn)站來說是“應(yīng)收件”。在運(yùn)單狀態(tài)成為“已簽收”之前,如果出現(xiàn)任何特殊情況,則該運(yùn)單狀態(tài)變成“問題件”或“異常件”。另外,運(yùn)單信息還可以通過客服人員手動(dòng)輸入的方式生成。所有的運(yùn)單信息都保存在Oracle數(shù)據(jù)源中,這一部分組成總體架構(gòu)的基礎(chǔ)層。
2)Hive數(shù)據(jù)倉(cāng)庫(kù)
Hive數(shù)據(jù)倉(cāng)庫(kù)由數(shù)據(jù)層和邏輯層共同構(gòu)成:
數(shù)據(jù)層由Hadoop平臺(tái)及其組件組成,包括Sqoop、Hive、MapReduce和 HDFS,原始數(shù)據(jù)通過ETL方式進(jìn)入數(shù)據(jù)層,以文件形式存儲(chǔ)在HDFS上,作為邏輯層的輸入數(shù)據(jù)。
邏輯層對(duì)已存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中的原始數(shù)據(jù)進(jìn)行數(shù)據(jù)分析之前,需要進(jìn)行前置處理,通過Python腳本拉取遠(yuǎn)程映射數(shù)據(jù),之后根據(jù)系統(tǒng)的業(yè)務(wù)需求進(jìn)一步對(duì)數(shù)據(jù)進(jìn)行查詢分析處理。整個(gè)Hive數(shù)據(jù)倉(cāng)庫(kù)工作過程中,會(huì)將代碼執(zhí)行時(shí)耗等保存為 log日志,自動(dòng)化程序會(huì)對(duì)此日志進(jìn)行分析,不同程序的執(zhí)行開始時(shí)間和結(jié)束時(shí)間以 email的形式發(fā)送給管理員。同時(shí),查詢分析處理的結(jié)果數(shù)據(jù)則會(huì)被導(dǎo)出至Mysql數(shù)據(jù)庫(kù)中,這些結(jié)果數(shù)據(jù)就是我們需要關(guān)注的有價(jià)值數(shù)據(jù)。
3)Web展示
Web展示模塊的全部功能由應(yīng)用層提供,應(yīng)用層采用 B/S結(jié)構(gòu),開發(fā)J2EE項(xiàng)目,選用 MVC模式,通過Web端以圖表的形式展示關(guān)注數(shù)據(jù)。前后的數(shù)據(jù)傳輸方式采用 ajax異步傳輸,數(shù)據(jù)使用 json格式。
1.2 開發(fā)語(yǔ)言選擇
開發(fā)語(yǔ)言選擇如圖2所示。

圖2 智慧物流大數(shù)據(jù)平臺(tái)技術(shù)架構(gòu)
上圖從左往右依次體現(xiàn)了開發(fā)過程中涉及的各個(gè)步驟所需開發(fā)語(yǔ)言。數(shù)據(jù) ETL部分將采用SHELL腳本開發(fā),前置和后置處理則通過 Python腳本開發(fā),數(shù)據(jù)分析部分通過SHELL腳本調(diào)度內(nèi)嵌的HiveQL語(yǔ)句,同時(shí)使用Hive的transform和using關(guān)鍵字調(diào)用Python腳本進(jìn)行復(fù)雜數(shù)據(jù)查詢分析處理,最后采用 J2EE技術(shù)構(gòu)建 Web項(xiàng)目,結(jié)合 echarts工具展示圖表數(shù)據(jù)。
2.1 前置處理
考慮到不同的業(yè)務(wù)調(diào)用的預(yù)處理腳本實(shí)現(xiàn)方法差不多,只有拉取到的數(shù)據(jù)不同,因此,以下分析以妥投率的預(yù)處理腳本為例,前置處理過程涉及到的腳本名稱及其說明如表 1所示。

表1 前置處理過程涉及到的腳本
2.2 查詢分析處理
查詢分析處理目的是通過對(duì) Hive數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行分析,從而將處理結(jié)果保存至 mysql數(shù)據(jù)庫(kù)中,作為Web展示的數(shù)據(jù)源。
數(shù)據(jù)成功導(dǎo)入 Hive之后,會(huì)立即執(zhí)行bolScheduler.sh腳本,該腳本會(huì)根據(jù)業(yè)務(wù)需求,對(duì)每個(gè)不同的業(yè)務(wù),調(diào)用相應(yīng)的業(yè)務(wù)處理腳本,這些業(yè)務(wù)腳本都存放在 bol文件夾中,該文件夾與bolScheduler.sh屬于同級(jí)目錄,它們都屬于 stats文件夾的子目錄,以妥投率為例,查詢分析處理SHELL腳本目錄結(jié)構(gòu)如圖 3所示。

圖3 業(yè)務(wù)處理SHELL腳本目錄結(jié)構(gòu)
圖3中,bol文件夾中存放的查詢分析處理腳本的編寫形式都差不多,不同點(diǎn)在于要針對(duì)不同業(yè)務(wù)功能實(shí)現(xiàn)不同HiveQL和Python腳本的編寫,以妥投率分析腳本 bolStatusRatio.sh為例,其具體實(shí)現(xiàn)過程如下:
首先,需要設(shè)置好腳本中到的變量值,包括腳本運(yùn)行日志記錄文件的路徑、控制臺(tái)輸出結(jié)果保存的文件路徑、開始和結(jié)束日期值、需要調(diào)用的其他腳本文件名和所屬包名等。
接下來,通過 SHELL命令進(jìn)入 Hive,然后運(yùn)行HiveQL語(yǔ)句,代碼如下:

在上述代碼中,以“$”符號(hào)開頭的表示變量,這些變量在進(jìn)入Hive環(huán)境之前已經(jīng)設(shè)置過,所以第一句的作用就是通過SHELL命令進(jìn)入HiveShell運(yùn)行環(huán)境中,同時(shí)保證將 Hive運(yùn)行結(jié)果(即最后在控制臺(tái)上顯示的標(biāo)準(zhǔn)輸出)保存到日志文件 (用變量resultFile表示)中。接著,ADD FILE命令會(huì)將HiveQL執(zhí)行過程中需要使用的 Python腳本添加進(jìn)來,成功添加后,使用 use命令進(jìn)入 dkcore數(shù)據(jù)庫(kù)。妥投率分析涉及的 HiveQL語(yǔ)句過于冗長(zhǎng),沒有單獨(dú)貼出來,僅使用Concrete_HiveQL來表示,該語(yǔ)句中主體部分如下所示:


上述 HiveQL片段表示從表名是 tableName的數(shù)據(jù)表(可以是臨時(shí)表)中查詢出字段 1至字段 3,使用 transform關(guān)鍵字可以將查詢出的這 3個(gè)字段作為Python腳本的輸入。接下來使用using關(guān)鍵字引入妥投率分析腳本,該腳本的輸出即為字段 4和5,注意,Python輸出字段個(gè)數(shù)與輸入字段個(gè)數(shù)可以不相同,這也是使用 python作為復(fù)雜數(shù)據(jù)分析腳本的一個(gè)重要原因,因?yàn)镠ive本身對(duì)于查詢字段只能作簡(jiǎn)單統(tǒng)計(jì),不能減少或增加輸出字段個(gè)數(shù)。
字段 4和 5一般就是妥投率分析需要展示的最終數(shù)據(jù),當(dāng)然,這些數(shù)據(jù)也可以作為外層 HiveQL的輸入數(shù)據(jù),只要將此數(shù)據(jù)集看作一個(gè)臨時(shí)表即可。HiveQL成功執(zhí)行后,使用 EOF命令退出Hive命令行模式,此時(shí)Hive中的執(zhí)行結(jié)果會(huì)在控制臺(tái)屏幕上顯示,同時(shí),前面已經(jīng)提到過,這些結(jié)果還被保存在了文件resultFile中,但是該文件中除了結(jié)果集數(shù)據(jù),還是存在一些不需要的命令語(yǔ)句,可以使用 sed命令,輔助正則表達(dá)式,將不需要的字符刪除,最后剩下的就是有價(jià)值的數(shù)據(jù)了,將該文件中的數(shù)據(jù)再導(dǎo)出至數(shù)據(jù)庫(kù)(項(xiàng)目中使用的是 Mysql),則整個(gè)查詢分析過程就此完成。
3.1 Hive數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行
基于 Hive的物流數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行處理過程全部由自動(dòng)化腳本完成,不需要人工干預(yù),因此未提供良好的用戶界面,但是其運(yùn)行過程中,會(huì)將一些后臺(tái)運(yùn)行情況使用標(biāo)準(zhǔn)輸出方式打印在控制臺(tái)上,通過控制臺(tái)顯示信息,可以監(jiān)控當(dāng)前后臺(tái)程序運(yùn)行的進(jìn)度。
1)ETL過程監(jiān)控
ETL過程后臺(tái)運(yùn)行情況可以通過 SSH終端訪問客戶端 SecureCRT遠(yuǎn)程連接Hadoop集群查看,如圖4所示。
圖4中,顯示了SHELL程序調(diào)用Sqoop命令完成數(shù)據(jù)導(dǎo)入的部分基本過程,可以看到,在程序執(zhí)行時(shí),系統(tǒng)將 Sqoop程序作為 MapReduce程序來運(yùn)行,首先為它指定了一個(gè)任務(wù)號(hào),然后開始執(zhí)行數(shù)據(jù)導(dǎo)入操作,同時(shí)將執(zhí)行進(jìn)度通過百分比顯示出來。任務(wù)完成后,會(huì)列出整個(gè)任務(wù)處理過程中使用到的計(jì)數(shù)器(Hadoop為每個(gè)作業(yè)維護(hù)若干計(jì)數(shù)器,可以用來描述該作業(yè)已處理的數(shù)據(jù)量、已產(chǎn)生的輸出數(shù)據(jù)量等各項(xiàng)指標(biāo))。

圖4 查看Hive表
任務(wù)完成后,控制臺(tái)會(huì)顯示數(shù)據(jù)導(dǎo)入成功信息。在 Hive中,可以查看導(dǎo)入的數(shù)據(jù)是否已保存為Hive表,如圖5所示。

圖5 數(shù)據(jù)處理片段
上圖中,使用 use命令進(jìn)入 dkcore數(shù)據(jù)庫(kù),使用 show tables命令可以看到當(dāng)前數(shù)據(jù)庫(kù) dkcore中存在的所有 Hive表,如 bill_ladings_hive,該表的表名是在Sqoop命令中寫好的。
2)數(shù)據(jù)處理過程監(jiān)控
數(shù)據(jù)的前置處理、查詢分析處理、后置處理均由自動(dòng)化腳本統(tǒng)一調(diào)度,其運(yùn)行過程使用 Hadoop的并行計(jì)算框架MapReduce去處理,與數(shù)據(jù)ETL類似,數(shù)據(jù)處理過程中仍然先確定一個(gè)任務(wù)號(hào),然后通過百分比顯示該任務(wù)進(jìn)度。數(shù)據(jù)處理片段如圖6所示。

圖6 部分結(jié)果數(shù)據(jù)
上圖中,Ended Job表示任務(wù)正常結(jié)束,此時(shí),結(jié)果數(shù)據(jù)已經(jīng)被寫入文本文件,同時(shí)導(dǎo)出至數(shù)據(jù)庫(kù)。圖7是部分結(jié)果數(shù)據(jù)。

圖7 部分結(jié)果數(shù)據(jù)
圖7中,第一行表示的是字段名,每個(gè)字段名之間通過逗號(hào)分隔,從第二行開始是每個(gè)字段對(duì)應(yīng)的值,字段值之間通過制表符分隔,具體的字段含義在3.3節(jié)數(shù)據(jù)存儲(chǔ)部分已經(jīng)介紹過。
3.2 Web展示
以面單妥投分析為例,妥投率有3個(gè)功能:站點(diǎn)妥投率,以表格的形式列出每個(gè)站點(diǎn)在某日期下的妥投率。地理區(qū)域妥投率,以地圖的形式列出省,市,縣在某日期下的妥投率。業(yè)務(wù)區(qū)域妥投率,先以組織關(guān)系樹列出組織,點(diǎn)擊組織查看某日期下的一周妥投率趨勢(shì)。
點(diǎn)擊導(dǎo)航”妥投率”進(jìn)行妥投率主頁(yè)面,有3個(gè)標(biāo)簽頁(yè)展示3個(gè)功能,如圖8所示。
對(duì)圖8中顯示的查詢條件:首先是區(qū)域,能夠篩選出某區(qū)域下的站點(diǎn)。日期表示查看該日期的妥投率(必選項(xiàng))。妥投率類型含 3種,24小時(shí)、48小時(shí)、和 72小時(shí)、最近一周(7天)和最近一個(gè)月(30天),默認(rèn)是 24小時(shí),若選擇其他的類型,則表格的到件數(shù)、簽收數(shù)等數(shù)據(jù)也會(huì)相應(yīng)變化。
文章以 DK智慧物流大數(shù)據(jù)平臺(tái)建設(shè)為背景,設(shè)計(jì)了基于Hive的物流數(shù)據(jù)倉(cāng)庫(kù)的系統(tǒng)架構(gòu),實(shí)現(xiàn)了該基于 Hive的物流數(shù)據(jù)倉(cāng)庫(kù)的基本功能,包括Hive數(shù)據(jù)存儲(chǔ)分析,Hive數(shù)據(jù)的前置處理、查詢分析處理、后置處理腳本實(shí)現(xiàn)以及Hive數(shù)據(jù)查詢分析結(jié)果的 Web展現(xiàn)等,很好的支持了物流行業(yè)的信息化建設(shè)和管理決策。

圖8 面單妥投率頁(yè)面
[1]牛瑞瑞,一種基于數(shù)據(jù)倉(cāng)庫(kù)的物流系統(tǒng)構(gòu)建研究[J].信息與電腦(理論版),2012(11):37-38.
[2]馮強(qiáng)鄭垂勇,商業(yè)智能技術(shù)在物流企業(yè)數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)中的應(yīng)用[J].物流技術(shù),2015(14):192-194.
[3]孟小峰 慈祥,大數(shù)據(jù)管理:概念,技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2015,50(1):146-169.
[4]吳明禮,張宏安,李也白,基于 Hadoop的高性能數(shù)據(jù)倉(cāng)庫(kù)建設(shè)研究[J].信息與電腦(理論版),2015(9):50-53.
[5]Zhu K,Applying data mining technology to solve the problem of traffic:a case study[J].Journal of Simulation,2014,2(4):214-217.
[6]Jiang P,Liu X S.Big data mining yields novel insights on cancer[J].Nature genetics,2015,47(2):103-104.
[7]Juan Y.Discussion on Integration of Data Warehouse and Big Data[J].Telecommunications Science,2015,31(3):62-66.
[8]Dean J,Ghemawat S.MapReduce:simplified data processing on large clusters[J].Communi-cations of the ACM,2008,51(1):107-113.
[9]張京一,基于 Hadoop的 Web查詢平臺(tái)的權(quán)限控制與性能優(yōu)化模塊.2015,北京郵電大學(xué)。
[10]費(fèi)仕憶,Hadoop大數(shù)據(jù)平臺(tái)與傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的協(xié)作研究.2014,東華大學(xué).
[11]葉文宸,基于 hive的性能優(yōu)化方法的研究與實(shí)踐[D].南京大學(xué),2011.
[12]郭超,劉波,林偉偉.基于Impala的大數(shù)據(jù)查詢分析計(jì)算性能研究 [J].計(jì)算機(jī)應(yīng)用研究,2015(5): 1130-1335.
[13]陳龍,萬定生,顧昕辰.基于Hive的水利普查數(shù)據(jù)倉(cāng)庫(kù)[J].計(jì)算機(jī)與現(xiàn)代化,2014(5):127-131.
[14]王德文,肖凱,肖磊.基于Hive的電力設(shè)備狀態(tài)信息數(shù)據(jù)倉(cāng)庫(kù)[J].電力系統(tǒng)保護(hù)與控制,2013(9): 125-131.
[15]查禮.基于Hadoop的大數(shù)據(jù)計(jì)算技術(shù)[J].科研信息化技術(shù)與應(yīng)用,2012(6):26-33.
[16]游進(jìn)國(guó),楊卓犖,胡建華,等.一種支持大規(guī)模數(shù)據(jù)的多維可視化分析框架[J].計(jì)算機(jī)工程,2011(19):26-31.
[17]王蘇衛(wèi).基于Hadoop和Hive的電信行業(yè)數(shù)據(jù)倉(cāng)庫(kù)研究[J].電子技術(shù)與軟件工程,2013(11):89.
Based on the Hive of data warehouse logistics research and design of the big data platform
ZHANG Rui
(Zhumadian Vocational and Technical College,Zhumadian 463000,China)
According to logistics enterprise data warehouse extensibility is bad,do not have a high level of automation operation and dealing with large-scale data effect is poor.This article through to the Hive logistics data warehouse technology is analyzed,put forward the concrete implementation of data warehouse logistics solution,the combination of cloud data warehouse platform virtualization technology,deployment of Hadoop and Hive environment,build a large data processing platform based on virtualization technology.At the same time from two aspects of data ETL and data query analysis and processing of the data warehouse extensibility Hive data storage analysis,Hive data pre-processing and so on carries on the research design.Through the Hive data warehouse operation effect is analyzed,indicates that the system is able to support management decisions.
intelligent logistics big data platform;Hive data warehouse;ETL;query analysis
TN915
A
1674-6236(2017)09-0031-05
2016-06-05稿件編號(hào):201606041
河南省科技計(jì)劃項(xiàng)目(9412014J0069)
張 銳(1980—),女,河南駐馬店人,講師。研究方向:計(jì)算機(jī)科學(xué)與技術(shù)、多媒體技術(shù)。