大數據到數據挖掘過程中理想和現實差別非常的大。很多人開始接觸大數據都是被大數據的分析、挖掘等吸引,但是現實卻是面對大公司紛繁復雜的系統和應用,如何將不同系統的數據整合在一起便于分析卻如此困難。
很多人覺得從事大數據工作就應該重點去學習分析挖掘的算法,但是事實卻并非如此,公司從零開始建設大數據平臺,其中80%的工作量都是準備數據,其余20%才是分析建模需要做的事。下面我們就舉例對中國航空信息數據的分析來說。我們從航信(航信是什么?)提供的數據,分析用戶乘機習慣的畫像。
方案分享:
首先是獲取數據,采用Flume組件功能將遠端航信的數據同步到本地進行數據預處理操作。航信提供的數據是文本文件數據,通常數據是延遲24小時生成,如:今天生成前一天的數據,一個航空公司可以獲得航信提供的20多種類型的數據。這樣的簡單重復的工作,需要找一個運行穩定且得到行業認可的數據同步組件,所以我們選用了Flume組件。
將數據遷移至Hadoop平臺,針對結構化文本數據采用的HIVE組件分析數據是最優的選擇。因為航信給我們的數據已經是結構化的數據,所以采用HIVE組件計算會非常方便。HIVE關聯的數據可以使用Hive_SQL進行快速的計算工作,Hive提供一套SQL查詢語言,用戶在客戶端只需要輸入SQL語言腳本,執行的時候HIVE將SQL轉換為MapReduce執行邏輯程序。
對給出的原始數據進行文本文件數據預處理。HIVE存儲計算的數據需將數據加工成統一格式,所以在數據加載到Hive表之前需要對文件數據進行。給我們的文本數據在結構上與HIVE支持的結構拆分有差別所以需要將數據加工成HIVE支持的數據格式。
航信給出的文本文件數據,查看航信標準文件,里面講解了數據補位規則和占位長度
這種格式的數據,HIVE后期計算將非常困難,所以在數據進入Hive之前需要將程序規則剔除,只留下文件有用的干數據,如下:
PS:如果對于數據文件中記錄沒有時間的數據在進入HIVE之前的預處理中加上數據執行的時間戳。
將HIVE的分析結果存入列式數據庫Hbase中。主要考慮的是Hbase的兩大特點。首先,Hbase非常靈活,在不影響其他數據的情況下可以任意動態添加列族,每一個列族里的列個數都是可以不一樣,使用非常靈活。其次,Hbase是列式分布式數據庫,它存儲了一套數據的樹形索引規則,數據查找非常的快速。本次用戶畫像以后還需要增加其他屬性的情況下,采用HBase技術非常貼合本次的分析任務。
困惑HIVE查詢出來的數據需要和Hbase結構一致才能插入,我想找到一種方法可以多次使用不同的HIVE-SQL分別為Hbase的一條數據插入各自統計數據。
結論:
本次分析基于航信提供的全量數據進行的用戶畫像分析,重點在于分析的技術方案分享。,這個技術方案可以適應離線數據分析結果以服務的方式高速被應用系統調用的特定場景(這句有點長,看能不能拆成短句),但可能可能并不是最優。