天天看點

基于指令行的mahout軟體0.8版本Canopy算法分析的資料處理流程

mahout軟體0.8版本Canopy算法分析的資料處理分為以下三個步驟:

  1. 從資料庫提煉你需要處理的資料的字段
  2. 依據提煉的資料處理為vectors
  3. 将處理後的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的路徑,否則會報出無法建立導出資料檔案的錯誤。

繼續閱讀