作为大数据初学者,机器学习算法的运用,只是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运行
[root@centos7 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 可以监控执行状态
算法的理解和灵活运用非一日之功,本次学习也只是到此一游,需要用到时再研。