張玉葉,孫延坤
(1. 濟南職業學院計算機學院,濟南 250014; 2. 濟南沃爾菲斯科技有限公司,濟南 250014)
隨著移動互聯網和智能手機的迅速普及,電子商務、云計算、虛擬現實、人工智能等技術的不斷發展,傳統產業不斷被重塑,大數據產業成為了新的產業革命核心[1]。各行各業正在以前所未有的速度每天產生海量數據,數據正在成為一種新的資源和新的生產要素[2]。大數據產業當前仍處于技術高速發展時期,用到的框架和工具有很多,其中用于做數據分析處理及可視化的方案也有很多,可根據實際使用場景來選擇。本文選用的是Zeppelin 和Hive,Zeppelin 是一個基于Web 的notebook,提供交互式數據分析和可視化功能。后臺支持接入多種數據處理引擎,如Spark、Hive 等。同時支持多種編程語言,如Scala、Python、Spark、Markdown、Shell 等;Hive 是一個基于Hadoop 的數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,然后通過相應的SQL 語句來對海量數據進行聯機分析處理[3]。Zeppelin 本身內置了柱狀圖、折線圖、餅圖、散點圖、面積圖等最常用的幾種基本圖形,只要將相應的數據查詢出來,不需要寫任何代碼就可直接實現數據可視化,使用起來相對比較簡單,因此利用Zeppelin和Hive做數據分析與可視化是目前業界應用較廣也是比較容易掌握的一種方案。
本文利用Zeppelin 和Hive 來對一組房屋銷售數據進行分析處理及可視化,通過此例來展示使用方法,從而快速上手數據分析與可視化。
數據來源于某地區的房屋銷售記錄,選取了某一年的銷售記錄作為原始數據集,數據集中的部分數據如圖1所示。

圖1 數據集中部分數據
數據集中各字段含義依次為銷售日期、銷售價格、臥室個數、房屋面積、樓層數、房屋評分、房屋建造年代和房屋修繕年代。
要使用Zeppelin和Hive,首先需要先搭建好相應的Hadoop,可根據實際情況選擇搭建偽分布式或完全分布式,然后安裝好相應的Hive[4]。確保Hadoop 和Hive 能夠正常使用,然后安裝部署Zeppelin。本文示例所使用的是Hadoop 偽分布式,各組件相應的版本為Hadoop2.7.7、Hive2.3.4和Zeppelin0.10.0。
數據分析是指用適當的分析方法對收集來的大量數據進行分析,提取有用信息和形成結論,對數據加以詳細研究和概括總結的過程。數據分析包括狹義的數據分析和廣義的數據分析。狹義的數據分析是指根據分析目的,采用對比分析、分組分析、交叉分析等分析方法,對收集的數據進行處理與分析,提取有價值的信息的過程;廣義的數據分析是指依據一定的目標,通過統計分析、聚類、分類、回歸等方法發現數據中隱含的信息的過程。即狹義的數據分析主要是從數據中提取顯性的信息,而廣義的數據分析則主要是從數據中挖掘隱含的信息,因此廣義的數據分析實際上是狹義的數據分析加上數據挖掘[5]。
數據可視化就是以圖形化方式表示數據。要想把數據可視化,必須知道它表達的是什么。數據是對現實世界的簡化和抽象表達,當可視化數據時,其實是在將對現實世界的抽象表達可視化。數據可視化可幫助人們從一個個獨立的數據點中解脫出來,換一個不同的角度去探索和理解它們。
通常,使用自然語言、數字等形式表達的概念是枯燥的、不易懂的,而可視化的技術可增加數據的生動性,圖表的應用可使數據更具有可讀性。“一圖抵千言”,數據可視化能讓決策者通過圖形快速直觀地看到數據分析結果,從而更容易理解業務變化趨勢或發現新的業務模式[6]。
在人工智能和大數據時代,數據分析與可視化是人類理解和處理海量數據的關鍵技術,可以幫助人們快速從海量數據中發現和獲取相應的信息或者幫助人們在錯綜復雜的數據中發現和驗證不同維度和指標之間的關聯。
不同的數據集有不同的分析目標和數據指標。通常情況下可將數據分為三類:用戶數據、行為數據和商品數據。用戶數據通常是記錄用戶基本信息的;行為數據則是記錄用戶做過什么,如對于電商數據則可能是用戶的購買行為、瀏覽行為或是收藏行為等;而商品數據則是記錄商品的基本信息。對于不同的數據有不同的數據分析指標,如對于用戶數據比較關注的是新增用戶數、用戶活躍率和留存率等,對于行為數據則比較關注訪問次數、訪問人數、轉換率等指標,而對于商品數據比較關注的則是成交量、成交額等。
上面列舉的只是一些通用數據指標,對于具體的數據集除了一些通用數據指標外還可以根據具體情況來分析其它的一些相關數據指標。本數據集屬于商品數據,因此對于此數據集,其分析目標主要是房屋的成交量、成交額,除此之外還可以分析房屋面積與價格之間的關系、不同評分或不同類型的房屋數量等。
數據集中存放了2014 年的房屋銷售數據,通過統計每月的房屋銷量,可以得出每個月的銷量情況。相應的代碼及查詢結果如圖2所示。

圖2 每月的房屋銷量查詢結果
Zeppelin 中,默認情況下數據查詢結果是以二維表格的形式顯示的。可通過點擊數據上方的相應按鈕來快速實現數據的可視化。如單擊折線圖按鈕,則數據以折線圖顯示。結果如圖3所示。也可以直接通過點擊柱狀圖按鈕,將其以柱狀圖顯示,結果如圖4所示。柱狀圖適宜展示各分組數據之間的數量比較。

圖3 每月房屋銷量折線圖

圖4 每月房屋銷量柱狀圖
如果是想查看各月的銷量占比情況,則可直接點擊餅圖按鈕,將其以餅圖顯示,結果如圖5所示。餅圖適宜描述各分組數據在總數據中的占比情況。

圖5 每月房屋銷量占比餅圖
同樣的方法可統計分析每月的房屋銷售額,還可以按季度來統計房屋的銷量和銷售額等。對于統計得到的數據可根據需要以相應的圖形進行展示。
如果想要了解房屋面積與房價之間的關系,可通過繪制相應的散點圖來查看。散點圖適宜展示兩個變量之間的相關性。代碼及結果如圖6所示。

圖6 房屋面積與房價散點圖
通過上述結果可以看出,房屋面積與房價之間具有一定的正相關性,即房屋面積越大,其房價越高。
如果想要了解用戶對房屋的評分情況,可通過分析不同評分的房屋數量來獲取。代碼及結果如圖7所示。同樣,如果是想查看數量,可用柱狀圖展示,如果想查看不同評分的房屋占比,則可改用餅圖展示。類似的方法還可統計不同樓層數或不同臥室數的房屋數量等。

圖7 不同評分的房屋數量柱狀圖
大數據時代如何快速有效處理海量數據,從中發現和提取人們所需要的有用信息已經成了各行各業的急需。而基于Zeppelin 和Hive 的數據分析及可視化可用相對簡短的代碼幫助人們快速有效地處理數據并獲取到相關信息,掌握Zeppelin 和Hive 的使用已經成了各行業數據分析師所必備的基本技能。本文通過一個實際數據集展示了如何利用Zeppelin 和Hive 來進行數據分析及可視化,其實現簡單方便,在目前大數據時代背景下有著廣泛的應用領域和良好的使用前景。讀者可參考其實現思路稍微改動一下即可實現更多類似的數據分析及可視化效果,從而快速提高數據分析及可視化能力。