mahout軟體0.8版本Canopy算法分析的資料處理分為以下三個步驟:
- 從資料庫提煉你需要處理的資料的字段
- 依據提煉的資料處理為vectors
- 将處理後的vectors資料讀取
一、從資料庫提煉資料
這是一個sqoop-->>hive-->>hdfs轉儲為vectors的過程
原理:首先通過sqoop将資料庫資料保證表結構不變全部導入到hive中,然後使用下面的語句建立準備用于mahout資料的hive表使用如下語句
create table 表名 (字段聲明) row format delimited fields terminated by ' '
需要注意,必須使用空格作為hive表中字段的分隔符才能夠被以指令行方式調用的mahout資料處理工具識别。
二、将hive表的資料處理為vectors
mahout自帶的org.apache.mahout.clustering.conversion.InputDriver類可以将全部數值的檔案轉換為vector的,如果是字元的文本轉換則要使用seqdirectory 和seq2sparse
這兩個工具,詳細參數可以使用如下的方式從指令行獲得
bin/mahout 類名 --help
需要注意,如果是以指令行方式處理資料,字元資料和數值資料不要混合在一個檔案裡,無論在資料庫中字段是否在同一個表中,一個要分離為不同檔案,或者将字元替代為數字。否則處理過程中會出現java虛拟機記憶體溢出或者記憶體不足的錯誤。
而被處理的資料也最好分為多個小的檔案。
三、讀取處理後的資料
Canopy算法處理後的資料是需要使用ClusterDump工具處理為非二進制格式,而不是VectorDump工具,同時,0.8版本的VectorDump工具參數已經發生重大變化和0.7以及0.6有了很大的不同
ClusterDump工具的輸出路徑需要是本地路徑而不能hdfs的路徑,否則會報出無法建立導出資料檔案的錯誤。