學習筆記:從0開始學習大資料-20. 機器學習spark ml演算法庫應用練習
作為大資料初學者,機器學習演算法的運用,只是hello world知道個123,以後專案需要再深入
Mahout,spark MLlib,spark ML三個演算法庫,根據網上了解比較,採用spark ml演算法庫作為學習物件。
本次學習只是除錯能執行網上的例子
程式碼案例網址:
https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice6/ 基於 Spark ML 的文字分類
1.環境,已經安裝hadoop,spark原來是1.6版本的,執行總是出問題,為了一致,下載的是2.4版本
因為hadoop是2.6版本的,就選了這個組合,下載的檔案是 spark-2.4.0-bin-hadoop2.6.tgz
spark的單機安裝配置執行,見我前面的文章,不再羅列。
2. 在eclipse中建立maven scala專案下的scala object,類名SMSClassifier
程式碼複製上面網址,無需修改
3. pom.xml中加入spark ml庫,注意版本
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.4.0</version>
</dependency>
為什麼是這個版本,這個開始費了點時間,執行作業總是提示沒有某個方法,後來找到問題解決辦法,就是先看執行環境的jar版本,然後設定eclipse中的編譯版本,兩者一致,就能順利執行。
4. eclipse 中編譯匯出類的jar檔案,提交spark執行
[[email protected] bin]# ./spark-submit --class com.linbin.scala.SMSClassifier --master spark://centos7:7077 /home/linbin/workspace/SMSClassifier.jar hdfs://centos7:8020/user/linbin/spark/SMSSpamCollection
因為在本地執行 可以不指定--master spark://<host>:<port> 引數
執行結果:
可以根據樣本訓練後,絕大部分的垃圾簡訊都能正確識別,上面紅色部分是識別結果與預期不符的,只是少數。
通過 http://centos7:8080 可以監控執行狀態
演算法的理解和靈活運用非一日之功,本次學習也只是到此一遊,需要用到時再研。